return self.sprite def getWidth(self): return self.width def getHeight(self): return self.height def getX(self): return self.x def getY(self): return self.y def getPOS(self): return self.pos if __name__ == "__main__": from window import Window from pygame import init init() window = Window() sprite = Sprite(window) while True: window.getEvents() window.clearScreen() window.blitSprite(sprite) window.updateScreen()
class Engine: def __init__(self): self.window = Window() self.player1 = Player1(self.window) self.player2 = Player2(self.window) self.ball = Ball(self.window) self.intro = Text("PONG 2.0", self.window) self.intro1 = Text("Player1: key a for up, key d for down.", self.window) self.intro2 = Text("Player2: key left for up, key right for down", self.window) self.intro3 = Text("Press Space to continue", self.window) self.title = Text("PONG 2.0", self.window) self.scorep1 = Text("Player1 Score: ", self.window) self.scorep2 = Text("Player2 Score: ", self.window) self.p1oint0 = Text("0", self.window) self.p1oint1 = Text("1", self.window) self.p1oint2 = Text("2", self.window) self.p1oint3 = Text("3", self.window) self.p1oint4 = Text("4", self.window) self.p1oint5 = Text("5", self.window) self.p1oint6 = Text("6", self.window) self.p1oint7 = Text("7", self.window) self.p1oint8 = Text("8", self.window) self.p1oint9 = Text("9", self.window) self.p1oint10 = Text("10", self.window) self.p1won = False self.p2oint0 = Text("0", self.window) self.p2oint1 = Text("1", self.window) self.p2oint2 = Text("2", self.window) self.p2oint3 = Text("3", self.window) self.p2oint4 = Text("4", self.window) self.p2oint5 = Text("5", self.window) self.p2oint6 = Text("6", self.window) self.p2oint7 = Text("7", self.window) self.p2oint8 = Text("8", self.window) self.p2oint9 = Text("9", self.window) self.p2oint10 = Text("10", self.window) self.p2won = False self.p1wont = Text("Player 1 won", self.window) self.p2wont = Text("Player 2 won", self.window) self.running = True def conti(self, keys): if keys[K_SPACE] == 1: self.running = True else: pass def run(self): while self.running: # --- INPUTS --- # self.window.getEvents() # --- PROCESSING --- # self.player1.conti(self.window.getKeyPressed()) self.scorep1.setPOS(0, 30) self.scorep2.setPOS(600, 30) self.intro.setPOS(150, 100) self.intro1.setPOS(150, 200) self.intro2.setPOS(150, 230) self.intro3.setPOS(150, 260) # --- OUTPUTS --- # self.window.clearScreen() self.window.blitSprite(self.intro) self.window.blitSprite(self.intro1) self.window.blitSprite(self.intro2) self.window.blitSprite(self.intro3) self.window.updateScreen() while self.player1.getcon() == True: self.window.clearScreen() # --- INPUTS --- # self.window.getEvents() # --- PROCESSING --- # self.player1.move(self.window.getKeyPressed()) self.player1.conti(self.window.getKeyPressed()) self.player2.move(self.window.getKeyPressed()) self.ball.move() self.ball.collision1(self.player1) self.ball.collision2(self.player2) self.scorep1.setPOS(0, 30) self.scorep2.setPOS(600, 30) # player 1 score if self.ball.getp1s() == 0: self.p1oint0.setPOS(160, 30) self.p1oint1.setPOS(-100, -100) self.p1oint2.setPOS(-100, -100) self.p1oint3.setPOS(-100, -100) self.p1oint4.setPOS(-100, -100) self.p1oint5.setPOS(-100, -100) self.p1oint6.setPOS(-100, -100) self.p1oint7.setPOS(-100, -100) self.p1oint8.setPOS(-100, -100) self.p1oint9.setPOS(-100, -100) self.p1oint10.setPOS(-100, -100) elif self.ball.getp1s() == 1: self.p1oint0.setPOS(-100, -100) self.p1oint1.setPOS(160, 30) self.p1oint2.setPOS(-1000, -100) self.p1oint3.setPOS(-1000, -100) self.p1oint4.setPOS(-100, -100) self.p1oint5.setPOS(-100, -100) self.p1oint6.setPOS(-100, -100) self.p1oint7.setPOS(-100, -100) self.p1oint8.setPOS(-100, -100) self.p1oint9.setPOS(-100, -100) self.p1oint10.setPOS(-100, -100) elif self.ball.getp1s() == 2: self.p1oint0.setPOS(-100, -100) self.p1oint1.setPOS(-100, -100) self.p1oint2.setPOS(160, 30) self.p1oint3.setPOS(-100, -100) self.p1oint4.setPOS(-100, -100) self.p1oint5.setPOS(-100, -100) self.p1oint6.setPOS(-100, -100) self.p1oint7.setPOS(-100, -100) self.p1oint8.setPOS(-100, -100) self.p1oint9.setPOS(-100, -100) self.p1oint10.setPOS(-100, -100) elif self.ball.getp1s() == 3: self.p1oint0.setPOS(-100, -100) self.p1oint1.setPOS(-100, -100) self.p1oint2.setPOS(-100, -100) self.p1oint3.setPOS(160, 30) self.p1oint4.setPOS(-100, -100) self.p1oint5.setPOS(-100, -100) self.p1oint6.setPOS(-100, -100) self.p1oint7.setPOS(-100, -100) self.p1oint8.setPOS(-100, -100) self.p1oint9.setPOS(-100, -100) self.p1oint10.setPOS(-100, -100) elif self.ball.getp1s() == 4: self.p1oint0.setPOS(-100, -100) self.p1oint1.setPOS(-100, -100) self.p1oint2.setPOS(-100, -100) self.p1oint3.setPOS(-100, -100) self.p1oint4.setPOS(160, 30) self.p1oint5.setPOS(-100, -100) self.p1oint6.setPOS(-100, -100) self.p1oint7.setPOS(-100, -100) self.p1oint8.setPOS(-100, -100) self.p1oint9.setPOS(-100, -100) self.p1oint10.setPOS(-100, -100) elif self.ball.getp1s() == 5: self.p1oint0.setPOS(-100, -100) self.p1oint1.setPOS(-100, -100) self.p1oint2.setPOS(-100, -100) self.p1oint3.setPOS(-100, -100) self.p1oint4.setPOS(-100, -100) self.p1oint5.setPOS(160, 30) self.p1oint6.setPOS(-100, -100) self.p1oint7.setPOS(-100, -100) self.p1oint8.setPOS(-100, -100) self.p1oint9.setPOS(-100, -100) self.p1oint10.setPOS(-100, -100) elif self.ball.getp1s() == 6: self.p1oint0.setPOS(-100, -100) self.p1oint1.setPOS(-100, -100) self.p1oint2.setPOS(-100, -100) self.p1oint3.setPOS(-100, -100) self.p1oint4.setPOS(-100, -100) self.p1oint5.setPOS(-100, -100) self.p1oint6.setPOS(160, 30) self.p1oint7.setPOS(-100, -100) self.p1oint8.setPOS(-100, -100) self.p1oint9.setPOS(-100, -100) self.p1oint10.setPOS(-100, -100) elif self.ball.getp1s() == 7: self.p1oint0.setPOS(-100, -100) self.p1oint1.setPOS(-100, -100) self.p1oint2.setPOS(-100, -100) self.p1oint3.setPOS(-100, -100) self.p1oint4.setPOS(-100, -100) self.p1oint5.setPOS(-100, -100) self.p1oint6.setPOS(-100, -100) self.p1oint7.setPOS(160, 30) self.p1oint8.setPOS(-100, -100) self.p1oint9.setPOS(-100, -100) self.p1oint10.setPOS(-100, -100) elif self.ball.getp1s() == 8: self.p1oint0.setPOS(-100, -100) self.p1oint1.setPOS(-100, -100) self.p1oint2.setPOS(-100, -100) self.p1oint3.setPOS(-100, -100) self.p1oint4.setPOS(-100, -100) self.p1oint5.setPOS(-100, -100) self.p1oint6.setPOS(-100, -100) self.p1oint7.setPOS(-100, -100) self.p1oint8.setPOS(160, 30) self.p1oint9.setPOS(-100, -100) self.p1oint10.setPOS(-100, -100) elif self.ball.getp1s() == 9: self.p1oint0.setPOS(-100, -100) self.p1oint1.setPOS(-100, -100) self.p1oint2.setPOS(-100, -100) self.p1oint3.setPOS(-100, -100) self.p1oint4.setPOS(-100, -100) self.p1oint5.setPOS(-100, -100) self.p1oint6.setPOS(-100, -100) self.p1oint7.setPOS(-100, -100) self.p1oint8.setPOS(-100, -100) self.p1oint9.setPOS(160, 30) self.p1oint10.setPOS(-100, -100) elif self.ball.getp1s() == 10: self.p1oint0.setPOS(-100, -100) self.p1oint1.setPOS(-100, -100) self.p1oint2.setPOS(-100, -100) self.p1oint3.setPOS(-100, -100) self.p1oint4.setPOS(-100, -100) self.p1oint5.setPOS(-100, -100) self.p1oint6.setPOS(-100, -100) self.p1oint7.setPOS(-100, -100) self.p1oint8.setPOS(-100, -100) self.p1oint9.setPOS(-100, -100) self.p1oint10.setPOS(160, 30) self.p1wont.setPOS(350, 280) self.p1won = True # player 2 score if self.ball.getp2s() == 0: self.p2oint0.setPOS(760, 30) self.p2oint1.setPOS(-100, -100) self.p2oint2.setPOS(-100, -100) self.p2oint3.setPOS(-100, -100) self.p2oint4.setPOS(-100, -100) self.p2oint5.setPOS(-100, -100) self.p2oint6.setPOS(-100, -100) self.p2oint7.setPOS(-100, -100) self.p2oint8.setPOS(-100, -100) self.p2oint9.setPOS(-100, -100) self.p2oint10.setPOS(-100, -100) elif self.ball.getp2s() == 1: self.p2oint0.setPOS(-100, -100) self.p2oint1.setPOS(760, 30) self.p2oint2.setPOS(-100, -100) self.p2oint3.setPOS(-100, -100) self.p2oint4.setPOS(-100, -100) self.p2oint5.setPOS(-100, -100) self.p2oint6.setPOS(-100, -100) self.p2oint7.setPOS(-100, -100) self.p2oint8.setPOS(-100, -100) self.p2oint9.setPOS(-100, -100) self.p2oint10.setPOS(-100, -100) elif self.ball.getp2s() == 2: self.p2oint0.setPOS(-100, -100) self.p2oint1.setPOS(-100, -100) self.p2oint2.setPOS(760, 30) self.p2oint3.setPOS(-100, -100) self.p2oint4.setPOS(-100, -100) self.p2oint5.setPOS(-100, -100) self.p2oint6.setPOS(-100, -100) self.p2oint7.setPOS(-100, -100) self.p2oint8.setPOS(-100, -100) self.p2oint9.setPOS(-100, -100) self.p2oint10.setPOS(-100, -100) elif self.ball.getp2s() == 3: self.p2oint0.setPOS(-100, -100) self.p2oint1.setPOS(-100, -100) self.p2oint2.setPOS(-100, -100) self.p2oint3.setPOS(760, 30) self.p2oint4.setPOS(-100, -100) self.p2oint5.setPOS(-100, -100) self.p2oint6.setPOS(-100, -100) self.p2oint7.setPOS(-100, -100) self.p2oint8.setPOS(-100, -100) self.p2oint9.setPOS(-100, -100) self.p2oint10.setPOS(-100, -100) elif self.ball.getp2s() == 4: self.p2oint0.setPOS(-100, -100) self.p2oint1.setPOS(-100, -100) self.p2oint2.setPOS(-100, -100) self.p2oint3.setPOS(-100, -100) self.p2oint4.setPOS(760, 30) self.p2oint5.setPOS(-100, -100) self.p2oint6.setPOS(-100, -100) self.p2oint7.setPOS(-100, -100) self.p2oint8.setPOS(-100, -100) self.p2oint9.setPOS(-100, -100) self.p2oint10.setPOS(-100, -100) elif self.ball.getp2s() == 5: self.p2oint0.setPOS(-100, -100) self.p2oint1.setPOS(-100, -100) self.p2oint2.setPOS(-100, -100) self.p2oint3.setPOS(-100, -100) self.p2oint4.setPOS(-100, -100) self.p2oint5.setPOS(760, 30) self.p2oint6.setPOS(-100, -100) self.p2oint7.setPOS(-100, -100) self.p2oint8.setPOS(-100, -100) self.p2oint9.setPOS(-100, -100) self.p2oint10.setPOS(-100, -100) elif self.ball.getp2s() == 6: self.p2oint0.setPOS(-100, -100) self.p2oint1.setPOS(-100, -100) self.p2oint2.setPOS(-100, -100) self.p2oint3.setPOS(-100, -100) self.p2oint4.setPOS(-100, -100) self.p2oint5.setPOS(-100, -100) self.p2oint6.setPOS(760, 30) self.p2oint7.setPOS(-100, -100) self.p2oint8.setPOS(-100, -100) self.p2oint9.setPOS(-100, -100) self.p2oint10.setPOS(-100, -100) elif self.ball.getp2s() == 7: self.p2oint0.setPOS(-100, -100) self.p2oint1.setPOS(-100, -100) self.p2oint2.setPOS(-100, -100) self.p2oint3.setPOS(-100, -100) self.p2oint4.setPOS(-100, -100) self.p2oint5.setPOS(-100, -100) self.p2oint6.setPOS(-100, -100) self.p2oint7.setPOS(760, 30) self.p2oint8.setPOS(-100, -100) self.p2oint9.setPOS(-100, -100) self.p2oint10.setPOS(-100, -100) elif self.ball.getp2s() == 8: self.p2oint0.setPOS(-100, -100) self.p2oint1.setPOS(-100, -100) self.p2oint2.setPOS(-100, -100) self.p2oint3.setPOS(-100, -100) self.p2oint4.setPOS(-100, -100) self.p2oint5.setPOS(-100, -100) self.p2oint6.setPOS(-100, -100) self.p2oint7.setPOS(-100, -100) self.p2oint8.setPOS(760, 30) self.p2oint9.setPOS(-100, -100) self.p2oint10.setPOS(-100, -100) elif self.ball.getp2s() == 9: self.p2oint0.setPOS(-100, -100) self.p2oint1.setPOS(-100, -100) self.p2oint2.setPOS(-100, -100) self.p2oint3.setPOS(-100, -100) self.p2oint4.setPOS(-100, -100) self.p2oint5.setPOS(-100, -100) self.p2oint6.setPOS(-100, -100) self.p2oint7.setPOS(-100, -100) self.p2oint8.setPOS(-100, -100) self.p2oint9.setPOS(760, 30) self.p2oint10.setPOS(-100, -100) elif self.ball.getp2s() == 10: self.p2oint0.setPOS(-100, -100) self.p2oint1.setPOS(-100, -100) self.p2oint2.setPOS(-100, -100) self.p2oint3.setPOS(-100, -100) self.p2oint4.setPOS(-100, -100) self.p2oint5.setPOS(-100, -100) self.p2oint6.setPOS(-100, -100) self.p2oint7.setPOS(-100, -100) self.p2oint8.setPOS(-100, -100) self.p2oint9.setPOS(-100, -100) self.p2oint10.setPOS(760, 30) self.p2wont.setPOS(350, 280) self.p2won = True # --- OUTPUTS --- # self.window.clearScreen() self.window.blitSprite(self.title) self.window.blitSprite(self.scorep1) self.window.blitSprite(self.scorep2) self.window.blitSprite(self.player1) self.window.blitSprite(self.player2) self.window.blitSprite(self.ball) # player 1 score self.window.blitSprite(self.p1oint0) self.window.blitSprite(self.p1oint1) self.window.blitSprite(self.p1oint2) self.window.blitSprite(self.p1oint3) self.window.blitSprite(self.p1oint4) self.window.blitSprite(self.p1oint5) self.window.blitSprite(self.p1oint6) self.window.blitSprite(self.p1oint7) self.window.blitSprite(self.p1oint8) self.window.blitSprite(self.p1oint9) self.window.blitSprite(self.p1oint10) # player 2 score self.window.blitSprite(self.p2oint0) self.window.blitSprite(self.p2oint1) self.window.blitSprite(self.p2oint2) self.window.blitSprite(self.p2oint3) self.window.blitSprite(self.p2oint4) self.window.blitSprite(self.p2oint5) self.window.blitSprite(self.p2oint6) self.window.blitSprite(self.p2oint7) self.window.blitSprite(self.p2oint8) self.window.blitSprite(self.p2oint9) self.window.blitSprite(self.p2oint10) if self.p1won == True: self.window.clearScreen() self.window.blitSprite(self.p1wont) elif self.p2won == True: self.window.clearScreen() self.window.blitSprite(self.p2wont) self.window.updateScreen()
self.SCREEN = pygame.transform.flip(self.SCREEN, True, False) self.X_FLIP = False if KEY_PRESSES[pygame.K_a] == 1 and not self.X_FLIP: self.SCREEN = pygame.transform.flip(self.SCREEN, True, False) self.X_FLIP = True def wasdMove(self, KEYPRESSES): super().wasdMove(KEYPRESSES) self.flipImageX(KEYPRESSES) if __name__ == "__main__": from window import Window import sys pygame.init() WINDOW = Window() SPRITE = ImageSprite("assets/bunny.png") SPRITE.setScale(2) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() KEY_PRESSED = pygame.key.get_pressed() SPRITE.wasdMove(KEY_PRESSED) WINDOW.clearScreen() WINDOW.getScreen().blit(SPRITE.getScreen(), SPRITE.getPOS()) WINDOW.updateFrame()
class Game: pygame.init() def __init__(self): ## Setup self.WINDOW = Window() self.WINDOW.setBackgroundImage(Image.BACKGROUND) self.PLAYER = ImageSprite(Image.PLAYER) self.PLAYER.setScale(2) self.PLAYER.setPOS((self.WINDOW.getVirtualWidth() - self.PLAYER.getWidth())//2, (self.WINDOW.getVirtualHeight()-self.PLAYER.getHeight())//2) self.SHRUBS = [] for i in range(5): self.SHRUBS.append(ImageSprite(Image.SHRUB)) self.SHRUBS[-1].setScale(5) self.EGGS = [] for i in range(2): for egg in Image.EGGS: self.EGGS.append(ImageSprite(egg)) self.EGGS[-1].setScale(3) self.placeItems() self.SCORE = 0 self.SCORE_TEXT = Text(f"SCORE: {self.SCORE}") # Timer self.TIMER = pygame.time.Clock() self.TIMER_MS = 0 self.TIME_LEFT = 15 self.TIME_TEXT = Text(f"TIME LEFT: {self.TIME_LEFT}") self.TIME_TEXT.setPOS(self.WINDOW.getVirtualWidth()-self.TIME_TEXT.getWidth(), 0) # Start Screen self.START_TEXT = Text("WELCOME TO EASTER HUNT! COLLECT AS MANY EGGS YOU CAN!") self.START_TEXT.setScale(2) self.START_TEXT.setPOS(self.WINDOW.getVirtualWidth()//2 - self.START_TEXT.getWidth()//2, (self.WINDOW.getVirtualHeight()-self.START_TEXT.getHeight())//2) self.START = Text("PRESS s/S to start") self.START.setScale(2) self.START.setPOS(self.WINDOW.getVirtualWidth() // 2 - self.START.getWidth() // 2, (self.WINDOW.getVirtualHeight() - self.START.getHeight() + 100) // 2) self.START_GAME = False # End screen self.END = Text("TIME HAS RUN OUT") self.END.setPOS(self.WINDOW.getVirtualWidth()//2 - self.END.getWidth()//2, (self.WINDOW.getVirtualHeight()-self.END.getHeight())//2) self.SCORE_END = Text(f"Your Score was: {self.SCORE}") self.SCORE_END.setPOS(self.WINDOW.getVirtualWidth()//2 - self.SCORE_END.getWidth()//2,(self.WINDOW.getVirtualHeight()- self.SCORE_END.getHeight() + self.END.getHeight() + 100)//2) def start(self, KEYPRESSES): if KEYPRESSES[pygame.K_s] == 1: self.START_GAME = True def placeItems(self): for shrub in self.SHRUBS: shrub.setPOS(randrange(self.WINDOW.getVirtualWidth()-shrub.getWidth()), randrange(self.WINDOW.getVirtualHeight()-shrub.getHeight())) for egg in self.EGGS: egg.setPOS(randrange(self.WINDOW.getVirtualWidth()-egg.getWidth()), randrange(self.WINDOW.getVirtualHeight()-egg.getHeight())) def getSpriteCollision(self, SPRITE1, SPRITE2): if pygame.Rect.colliderect(SPRITE1.getRect(), SPRITE2.getRect()): return True else: return False def checkEggPicked(self): PICKED = 0 for egg in self.EGGS: if egg.getX() == self.WINDOW.getVirtualWidth(): PICKED += 1 if PICKED == len(self.EGGS): return True else: return False def checkTime(self): if self.TIME_LEFT == 0: return True else: return False def updateTime(self): self.TIMER_MS += self.TIMER.tick() if self.TIMER_MS > 1000 and self.TIME_LEFT > 0: self.TIME_LEFT -= 1 self.TIME_TEXT.setText(f"TIME LEFT: {self.TIME_LEFT}") self.TIMER_MS = 0 def run(self): while True: ## -- INPUTS for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() KEYS_PRESSED = pygame.key.get_pressed() self.WINDOW.updateFrame() self.WINDOW.getScreen().blit(self.START_TEXT.getScreen(), self.START_TEXT.getPOS()) self.WINDOW.getScreen().blit(self.START.getScreen(), self.START.getPOS()) self.start(KEYS_PRESSED) if self.START_GAME == True: ## -- PROCESSING KEYS_PRESS = pygame.key.get_pressed() self.PLAYER.wasdMoveChkBoundaries(KEYS_PRESS, self.WINDOW.getVirtualWidth(), self.WINDOW.getVirtualHeight()) for egg in self.EGGS: if self.getSpriteCollision(self.PLAYER, egg): egg.setPOS(self.WINDOW.getVirtualWidth(), self.WINDOW.getVirtualHeight()) self.SCORE += 1 self.SCORE_TEXT.setText(f"SCORE: {self.SCORE}"s) if self.checkEggPicked(): self.placeItems() self.updateTime() ## -- OUTPUTS self.WINDOW.clearScreen() self.WINDOW.getScreen().blit(self.PLAYER.getScreen(), self.PLAYER.getPOS()) for egg in self.EGGS: self.WINDOW.getScreen().blit(egg.getScreen(), egg.getPOS()) for shrub in self.SHRUBS: self.WINDOW.getScreen().blit(shrub.getScreen(), shrub.getPOS()) self.WINDOW.getScreen().blit(self.SCORE_TEXT.getScreen(), self.SCORE_TEXT.getPOS()) self.WINDOW.getScreen().blit(self.TIME_TEXT.getScreen(), self.TIME_TEXT.getPOS()) if self.checkTime(): self.WINDOW.clearScreen() self.WINDOW.getScreen().blit(self.END.getScreen(), self.END.getPOS()) self.WINDOW.getScreen().blit(self.SCORE_END.getScreen(), self.SCORE_END.getPOS()) self.WINDOW.updateFrame()