Jako kostra Arcade, jenom v metodě update přidán pohy míčků a mizení.
"""arcade1
- Vytvoříme třídu okno aplikace děděním ze třídy arcade.Window.
- Vtvoříme novou třídu Ball, má atribut jako pozice, barva atd.
- Definujeme novou funkci make_ball, která vytváří instanci míček a vrací ho jako návratovou hodnotu.
- Definujeme novou funkci main, která obsahuje vytvoření instance tříd okno aplikace a voláme případně
její metodu setup(), nakone zavoláme hlavní smyčku programu app.run()
- Funkci (správně metodu) main voláme při startu programu
- Jsou ošetřeny události jako on_draw, on_mouse_motion, on_mouse_click atd.
- Přidán pohyb míčků dolů automaticky a dole mizí
- Vyzkoušena reakce na stisk klávesy "d"
"""
import arcade
import random
# # definuji konstanty, je to praktické
SCREEN_WIDTH = 1200
SCREEN_HEIGHT = 600
SCREEN_TITLE = "Nadpis v liště okna"
class Ball: # nová třída Ball
def __init__(self):
self.x = 0 # definujeme atributy míčku
self.y = 0
self.change_x = 0
self.change_y = 0
self.color = None # nebo konstanty barev - arcade.color.blue
self.size = 0
def make_ball():
micek = Ball() # vytvořím instanci
micek.size = random.randrange(10,30) #náhodná velikost míčku
micek.x = random.randrange(micek.size,SCREEN_WIDTH-micek.size) # pozice
micek.y = random.randrange(micek.size,SCREEN_HEIGHT-micek.size)
micek.change_x = random.randrange(-2,3) # změna/čas = rychlost
micek.change_y = random.randrange(-2,3)
micek.color = (random.randrange(256),random.randrange(256),random.randrange(256)) # náhodná RGB
return micek
class MyGame(arcade.Window): # vytvoříme třídu zděděním třídy Window
def __init__(self): # inicializátor naší třídy - zavolám init nadřezené třídy a
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE) # předám mu argumenty pro vytvoření okna
self.ball_list = [] # vytvořím prázdný seznam míčků
ball = make_ball() # vytvořím míček - návratová hodnota fce
self.ball_list.append(ball) # připojím na konec seznamu míčků
self.pos = 0
def setup(self): # můžeme volat z progranu - reset hry apod.
pass # potom nastavíme seznam spritů, reset score apod.
def on_draw(self): # vykreslení obrazovky, kód pro vykreslení, 1/60s
arcade.start_render() # musí být na začátku
for mic in self.ball_list:
arcade.draw_circle_filled(mic.x,mic.y,mic.size,mic.color)# např. vykresli míčky ze seznamu....
#arcade.draw_text("AHOJ", 10, 20, arcade.color.WHITE, 14) # např. text
def on_update(self, delta_time): # tady bude logika, např. posun +=1,
#self.pos+=1 self.pos = self.pos+1
#print(self.pos)
# cyklus pro všechny míčky v seznamu
for micek in self.ball_list: # for i in range (0,len(ball_list) for jmeno in seznam
micek.y =micek.y - 1 # zvětším souřadnici y
if micek.y<micek.size:
self.ball_list.remove(micek)
def on_mouse_motion(self, x, y, dx, dy): # ošetření událostí
pass
def on_mouse_press(self, x, y, button, modifiers): # ošetření událostí
if button==arcade.MOUSE_BUTTON_LEFT: # button je int
micek=make_ball() # vytvoříme nový míček
self.ball_list.append(micek) # a přidáme do seznamu
def on_key_press(self,symbol, modififiers):
if symbol==arcade.key.D: # arcade.key.UP apod. malé d je 100
print(symbol)
def main(): # hlavní fce
window = MyGame() # vytvoříme naši instanci MyGame (šlo by i bez)
window.setup() # případný reset a nastavení hry nebo nový level
arcade.run() # spustí hlavní smyčku prg
if __name__ == "__main__": # if je to prg, ne modul, volej hlavní fci
main()
- Podrobnosti
- Zobrazení: 193
"""Jednoduchý základní příklad
- Vytvoříme třídu okno aplikace děděním ze třídy arcade.Window.
- Vtvoříme novou třídu Ball, má atribut jako pozice, barva atd.
- Definujeme novou funkci make_ball, která vytváří instanci míček a vrací ho jako návratovou hodnotu.
- Definujeme novou funkci main, která obsahuje vytvoření instance tříd okno aplikace a voláme případně
její metodu setup(), nakonec zavoláme hlavní smyčku programu app.run()
- Funkci (správně metodu) main voláme při startu programu
- Jsou ošetřeny události jako on_draw, on_mouse_motion, on_mouse_click atd.
"""
import arcade
import random
# # definuji konstanty, je to praktické
SCREEN_WIDTH = 1200
SCREEN_HEIGHT = 600
SCREEN_TITLE = "Nadpis v liště okna"
class Ball: # nová třída Ball
def __init__(self):
self.x = 0 # definujeme atributy míčku
self.y = 0
self.change_x = 0
self.change_y = 0
self.color = None # nebo konstanty barev - arcade.color.blue
self.size = 0
def make_ball():
micek = Ball() # vytvořím instanci
micek.size = random.randrange(10,30) #náhodná velikost míčku
micek.x = random.randrange(micek.size,SCREEN_WIDTH-micek.size) # pozice
micek.y = random.randrange(micek.size,SCREEN_HEIGHT-micek.size)
micek.change_x = random.randrange(-2,3) # změna/čas = rychlost
micek.change_y = random.randrange(-2,3)
micek.color = (random.randrange(256),random.randrange(256),random.randrange(256)) # náhodná RGB
return micek
class MyGame(arcade.Window): # vytvoříme třídu zděděním třídy Window
def __init__(self): # inicializátor naší třídy - zavolám init nadřezené třídy a
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE) # předám mu argumenty pro vytvoření okna
self.ball_list = [] # vytvořím prázdný seznam míčků
ball = make_ball() # vytvořím míček - návratová hodnota fce
self.ball_list.append(ball) # připojím na konec seznamu míčků
def setup(self): # můžeme volat z progranu - reset hry apod.
pass # potom nastavíme seznam spritů, reset score apod.
def on_draw(self): # vykreslení obrazovky, kód pro vykreslení, 1/60s
arcade.start_render() # musí být na začátku
for mic in self.ball_list:
arcade.draw_circle_filled(mic.x,mic.y,mic.size,mic.color)# např. vykresli míčky ze seznamu....
#arcade.draw_text("AHOJ", 10, 20, arcade.color.WHITE, 14) # např. text
def on_update(self, delta_time): # tady bude logika, např. posun +=1,
pass
def on_mouse_motion(self, x, y, dx, dy): # ošetření událostí
pass
def on_mouse_press(self, x, y, button, modifiers): # ošetření událostí
if button==arcade.MOUSE_BUTTON_LEFT: # button je int
micek=make_ball() # vytvoříme nový míček
self.ball_list.append(micek) # a přidáme do seznamu
def main(): # hlavní fce
window = MyGame() # vytvoříme naši instanci MyGame (šlo by i bez)
window.setup() # případný reset a nastavení hry nebo nový level
arcade.run() # spustí hlavní smyčku prg
if __name__ == "__main__": # if je to prg, ne modul, volej hlavní fci
main()
- Podrobnosti
- Zobrazení: 190