Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

Cvičení 10, Objekty, Stromy

náplň cvičení

Objekty

Třídy pro komplexní čísla:

  • Třída obsahuje dvě proměnné real a imag
  • Konstruktor (metoda _init_) nastavuje tyto proměnné defaultně na 0
  • Pro přímý výpis funkcí print je vhodné definovat metodu _str_, která vrací string s formátovaným výstupem
  • Další možností reprezentace třídy je metoda _repr_, která by měla vracet minimální popis třídy jako string
  • Pozor: init a repr má v názvu dvě podtržítka!!!

class Complex:
    def __init__(self, real=0, imag=0):
        self.real = real
        self.imag = imag
 
    def amplitude(self):
        return self.real*self.real + self.imag*self.imag
 
    def add(self, rhs):
        self.real += rhs.real
        self.imag += rhs.imag
 
    def sub(self, rhs):
        self.real -= rhs.real
        self.imag -= rhs.imag
 
    def __str__(self):
        sign = "+";
        if (self.imag < 0):
            sign = "-";
        return str(self.real) + sign + str(abs(self.imag)) + "i"
 
    def __repr__(self):
        return 'Complex('+str(self.real)+', '+str(self.imag)+')'
 
    def mul(self, rhs):
        r = self.real*rhs.real - self.imag*rhs.imag;
        i = self.real*rhs.imag + self.imag*rhs.real;
        self.real = r
        self.imag = i 
 
if __name__=="__main__":
    a = Complex()
    print("a=",a)
 
    b = Complex(1,-1)
    print("b=",b)
 
    a.add(b)
    print("a=",a)
 
    a.mul(b)
    print("a=",a)
 
    print("|a|=",a.amplitude())
    print("|b|=",b.amplitude())

Semestrální práce

  • Semestrální práci je věnována samostatná stránka.
  • Stáhněte si player.py, manager.py, obstacles.py
  • Seznamte se s reprezentací překážek, realizováno třídou Obstacle (obstackle.py)
  • Implementujte
    • player.print_board() - vytiskne aktuální stav hracího plánu
    • player.is_in_board(x, y) - vrací True, pokud se (x,y) nachází v poli, jinak False
    • player.can_player_move(fromx, x, y) - vrací True, pokud může hráč provést krok ze své aktuální pozice na pozici (tox, toy)
  • Implementujte player.expand_move() tak, aby vracel alespoň jeden platný tah hráče.
courses/b3b33alp/cviceni/t10.txt · Last modified: 2017/12/05 09:19 by herinjan