
Nadam se da nisam promasio forum (mislim da je bolje da postavimovde nego u gamedev-u) posto mi je potrebna pomoc oko pygame-a, tacnije platformske igre. Znaci pokusavam da napravim da igrac moze lepo da se krece preko platformi ali mi ne uspeva. Napravio sam skok, kretanje i delimicno kretanje po platformama. Potrebna mi je pomoc da ovo kretanje vise ne bude
deimicno. Evo koda:
import pygame, os
from pygame.locals import*
def loadimage(name, transparent=0):
fullname = os.path.join('data', name)
image = pygame.image.load(fullname)
if transparent:
image.set_colorkey(image.get_at((0,0)))
return image.convert(), image.get_rect()
class Cat(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect = loadimage('macka.png',1)
screen = pygame.display.get_surface()
area = screen.get_rect()
self.rect.bottomleft = 0,0
self.acceleration = 0
self.inair = 1 #inair = Cat in air? True or Flase
self.speed = 9
self.direction = 0
def update(self):
if self.inair:
self.acceleration +=1
self.rect.move_ip(self.direction*self.speed, self.acceleration)
collision = self.rect.collidelistall(florsrect)
if collision != []:
#Cheking collision with platforms
for fi in collision: #fi is flor index
if florsrect[fi].top < self.rect.bottom:
self.rect.bottom = florsrect[fi].top
self.inair = 0
self.accelearation = 0
else:
self.inair = 1
def jump(self):
if not self.inair:
self.acceleration =-15
self.inair = 1
class Flor(pygame.sprite.Sprite):
def __init__(self, pos):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((200,20))
self.image.fill((0,0,0))
self.rect = self.image.get_rect()
self.rect.topleft = pos
def main():
global florsrect
pygame.init()
screen = pygame.display.set_mode((640,480))
#Objects
clock = pygame.time.Clock()
c = Cat()
flors =[
Flor((0,400)),
Flor((100,330)),
Flor((0,240))
]
florsrect = []
for x in flors:
florsrect.append(x.rect)
#Background
background = pygame.Surface(screen.get_size()).convert()
background.fill((100,125,0))
screen.blit(background, (0,0))
pygame.display.flip()
#Sprites
allsprites= [c]
for x in flors:
allsprites.append(x)
#MAIN LOOP
while 1:
clock.tick(60)
#commands
for event in pygame.event.get():
if (event.type == KEYDOWN and event.key == K_ESCAPE):
pygame.quit()
return
keystate = pygame.key.get_pressed()
c.direction = keystate[K_RIGHT] - keystate[K_LEFT]
if keystate[K_UP]:c.jump()
#draw everything
screen.blit(background, (0,0))
for sprite in allsprites:
sprite.update()
screen.blit(sprite.image,sprite.rect)
pygame.display.flip()
main()
P.S. napravite folder 'data' i u njega stavite neku slicicu za igraca. Dobro bi doslo da ako neko zna neki bolji (optimizovaniji) nacin za ovo sto sam do sada uradio iznese ovde na forum.











Pomoc za pygame igru