PyGame - pomoc s jednoduchými vecami
PyGame - pomoc s jednoduchými vecami
Zdravím ,našiel by sa tu nejaký "odborník" na pygame ? Nebudem tu hadzať kod pretoze je viacej veci ktore ma zaujimaju,ale v podstate ide len o jednoduche nejake animacie,nepriatelia,strielanie a pod. Ak sa taký ochotný človek nájde tak mi napíš prosím ťa,ďakujem
)
Re: PyGame - pomoc s jednoduchými vecami
Najlepšie by bolo napísať tu. Ja som robil v pygame pár pokusov, hádam si niečo z toho pamätám.
Re: PyGame - pomoc s jednoduchými vecami
Momentalne mam problem ze ked skocim tak sa mi nehybe do stran a neviem ako to spravit tak aby ked skocim som sa hybal aj do stran a taktiez ako spomalit skakanie lebo to je celkom rychle a plynulejsie pohyby kocky
) Kod:
Kód: Vybrať všetko
import pygame
class App():
def __init__(self):
pygame.init()
self.clock=pygame.time.Clock()
pygame.key.set_repeat(50,50) #drzi klavesu a pohybuje sa
self.window_height=480 #velkost okna
self.window_width=640 #velkost okna
self.screen=pygame.display.set_mode((self.window_width,self.window_height))
self._y=400 #y suradnice
self._x=100 #x suradnice
self.ground_height=40 #vyska zeme
self.ground_width=1000 #sirka zeme
self.rect_width=40 #strana "hraca"-kocky
self.rect_height=40
self.white=(255,255,255) #farby RGB
self.black=(0,0,0)
self.red=(255,0,0)
self.green=(0,255,0)
self.blue=(0,0,255)
self.FPS=30
self.isOnGround=True #ci je kocka na "zemi"
self.running=True #kvoli main
self.speed=-10 #ako vysoko skoci
def checkBound(self,x,y): ##kontroluje ci je stvorec vo vnutri okna
if x<0:
self._x=0
if y<0:
self._y=0
if x>self.window_width-self.rect_width:
self._x=self.window_width-self.rect_width
if y>self.window_height-self.rect_height-self.ground_height:
self._y=self.window_height-self.rect_height-self.ground_height
def jump(self): ##skok
self.isOnGround=False
while self.isOnGround==False:
self._y+=self.speed
self.speed+=1
print(self._y)
if self._y>=self.window_height-self.ground_height-self.rect_height: #refresni
self._y=self.window_height-self.ground_height-self.rect_height
self.speed=-10
self.isOnGround=True
self.update() #update scrn
def event(self): #stlacanie klaves
self.keys=pygame.key.get_pressed()
for e in pygame.event.get():
if e.type==pygame.QUIT:
self.running=False
if e.type==pygame.KEYDOWN:
if self.keys[pygame.K_RIGHT]:
self._x+=10
if self.keys[pygame.K_LEFT]:
self._x-=10
if e.key==pygame.K_SPACE and self.isOnGround:
self.jump()
def update(self): #update okna
self.screen.fill((self.white))
self.checkBound(self._x,self._y)
pygame.draw.rect(self.screen,(self.blue),(0,self.window_height-self.ground_height,self.ground_width,self.ground_height))
pygame.draw.rect(self.screen,(self.red),(self._x,self._y,self.rect_width,self.rect_height))
pygame.display.update()
def main(self): #main
while self.running:
self.clock.tick(self.FPS) #kvoli FPS
self.event()
self.update()
myApp=App()
myApp.main()
pygame.quit()
quit()Re: PyGame - pomoc s jednoduchými vecami
No, to je preto, lebo tam máš ten while, v ktorom potom samozrejme nemôžeš kontrolovať doprava/dolava.
Navrhujem aby si pri stlačení medzery len nastavil že jumping = True a potom v update pripočítaval y nejakým štýlom
Navrhujem aby si pri stlačení medzery len nastavil že jumping = True a potom v update pripočítaval y nejakým štýlom
Re: PyGame - pomoc s jednoduchými vecami
Navrhujem si radšej pozrieť základy lineárnej algebry a implementovať rýchlosť pomocou 2D vektora, napr. tu: http://blog.wolfire.com/2009/07/linear- ... rs-part-1/
Re: PyGame - pomoc s jednoduchými vecami
xadman
keď stlačiš 2x medzernik zrobiš dvojitý skok = treba podmienku aby to bolo false keď už je vo vzduchu
keď stlačiš 2x medzernik zrobiš dvojitý skok = treba podmienku aby to bolo false keď už je vo vzduchu