from pygame.locals import * from random import randint import pygame import time
class Apple: x = 0 y = 0 step = 44
def __init__(self,x,y): self.x = x * self.step self.y = y * self.step
def draw(self, surface, image): surface.blit(image,(self.x, self.y))
class Player: x = [0] y = [0] step = 44 direction = 0 length = 3 updateCountMax = 2 updateCount = 0
def __init__(self, length): self.length = length for i in range(0,2000): self.x.append(-100) self.y.append(-100)
self.x[0] = 1*44 self.x[0] = 2*44
def update(self):
self.updateCount = self.updateCount + 1 if self.updateCount > self.updateCountMax:
for i in range(self.length-1,0,-1): self.x[i] = self.x[i-1] self.y[i] = self.y[i-1]
if self.direction == 0: self.x[0] = self.x[0] + self.step if self.direction == 1: self.x[0] = self.x[0] - self.step if self.direction == 2: self.y[0] = self.y[0] - self.step if self.direction == 3: self.y[0] = self.y[0] + self.step
self.updateCount = 0
def moveRight(self): self.direction = 0
def moveLeft(self): self.direction = 1
def moveUp(self): self.direction = 2
def moveDown(self): self.direction = 3
def draw(self, surface, image): for i in range(0,self.length): surface.blit(image,(self.x[i],self.y[i]))
class Computer: x = [0] y = [0] step = 44 direction = 0 length = 3 updateCountMax = 2 updateCount = 0
def __init__(self, length): self.length = length for i in range(0,2000): self.x.append(-100) self.y.append(-100)
self.x[0] = 1*44 self.y[0] = 4*44
def update(self):
self.updateCount = self.updateCount + 1 if self.updateCount > self.updateCountMax:
for i in range(self.length-1,0,-1): self.x[i] = self.x[i-1] self.y[i] = self.y[i-1]
if self.direction == 0: self.x[0] = self.x[0] + self.step if self.direction == 1: self.x[0] = self.x[0] - self.step if self.direction == 2: self.y[0] = self.y[0] - self.step if self.direction == 3: self.y[0] = self.y[0] + self.step
self.updateCount = 0
def moveRight(self): self.direction = 0
def moveLeft(self): self.direction = 1
def moveUp(self): self.direction = 2
def moveDown(self): self.direction = 3
def target(self,dx,dy): if self.x[0] > dx: self.moveLeft()
if self.x[0] < dx: self.moveRight()
if self.x[0] == dx: if self.y[0] < dy: self.moveDown()
if self.y[0] > dy: self.moveUp()
def draw(self, surface, image): for i in range(0,self.length): surface.blit(image,(self.x[i],self.y[i]))
class Game: def isCollision(self,x1,y1,x2,y2,bsize): if x1 >= x2 and x1 <= x2 + bsize: if y1 >= y2 and y1 <= y2 + bsize: return True return False
class App:
windowWidth = 800 windowHeight = 600 player = 0 apple = 0
def __init__(self): self._running = True self._display_surf = None self._image_surf = None self._apple_surf = None self.game = Game() self.player = Player(5) self.apple = Apple(8,5) self.computer = Computer(5)
def on_init(self): pygame.init() self._display_surf = pygame.display.set_mode((self.windowWidth,self.windowHeight), pygame.HWSURFACE) pygame.display.set_caption('Pygame pythonspot.com example') self._running = True self._image_surf = pygame.image.load("pygame.png").convert() self._apple_surf = pygame.image.load("apple.png").convert()
def on_event(self, event): if event.type == QUIT: self._running = False
def on_loop(self): self.computer.target(self.apple.x, self.apple.y) self.player.update() self.computer.update() for i in range(0,self.player.length): if self.game.isCollision(self.apple.x,self.apple.y,self.player.x[i], self.player.y[i],44): self.apple.x = randint(2,9) * 44 self.apple.y = randint(2,9) * 44 self.player.length = self.player.length + 1
for i in range(0,self.player.length): if self.game.isCollision(self.apple.x,self.apple.y,self.computer.x[i], self.computer.y[i],44): self.apple.x = randint(2,9) * 44 self.apple.y = randint(2,9) * 44
for i in range(2,self.player.length): if self.game.isCollision(self.player.x[0],self.player.y[0],self.player.x[i], self.player.y[i],40): print "You lose! Collision: " print "x[0] (" + str(self.player.x[0]) + "," + str(self.player.y[0]) + ")" print "x[" + str(i) + "] (" + str(self.player.x[i]) + "," + str(self.player.y[i]) + ")" exit(0) pass def on_render(self): self._display_surf.fill((0,0,0)) self.player.draw(self._display_surf, self._image_surf) self.apple.draw(self._display_surf, self._apple_surf) self.computer.draw(self._display_surf, self._image_surf) pygame.display.flip() def on_cleanup(self): pygame.quit() def on_execute(self): if self.on_init() == False: self._running = False while( self._running ): pygame.event.pump() keys = pygame.key.get_pressed() if (keys[K_RIGHT]): self.player.moveRight()
if (keys[K_LEFT]): self.player.moveLeft()
if (keys[K_UP]): self.player.moveUp()
if (keys[K_DOWN]): self.player.moveDown()
if (keys[K_ESCAPE]): self._running = False
self.on_loop() self.on_render()
time.sleep (50.0 / 1000.0); self.on_cleanup() if __name__ == "__main__" : theApp = App() theApp.on_execute()
|
Leave a Reply: