def onButton(self, event): button = event.GetEventObject() name = button.GetName() if name == "1": temp = SpriteLib.Alien(1) type = 1 subType = 1 elif name == "2": temp = SpriteLib.Alien(2) type = 1 subType = 2 elif name == "3": temp = SpriteLib.Alien(3) type = 1 subType = 3 elif name == "4": temp = SpriteLib.Alien(4) type = 1 subType = 4 elif name == "5": temp = SpriteLib.Alien(5) type = 1 subType = 5 elif name == "Env1": temp = SpriteLib.EnviornmentComponent(1) type = 2 subType = 1 print self.levelPanel.CalcScrolledPosition(5, 5) print self.levelPanel.CalcUnscrolledPosition(5, 5) self.staticBitmap.AddImage( temp, type, subType, self.levelPanel.CalcUnscrolledPosition(5, 5))
def __init__(self, parent, ID): wx.ScrolledWindow.__init__(self, parent, ID) self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW)) self.mainSizer = wx.BoxSizer(wx.HORIZONTAL) self.scrollPnlSizer = wx.BoxSizer(wx.VERTICAL) self.contentSizer = wx.FlexGridSizer(rows=2, cols=2, hgap=10, vgap=5) #create panel for level data self.levelPanel = scrolled.ScrolledPanel(self, -1, size=(350, 400), style=wx.TAB_TRAVERSAL | wx.SUNKEN_BORDER, name="levelPanel") self.staticBitmap = DragableCanvasBitmap(self.levelPanel) self.scrollPnlSizer.Add(self.staticBitmap, 0, wx.ALL, 5) self.levelPanel.SetSizer(self.scrollPnlSizer) self.mainSizer.Add(self.levelPanel, flag=wx.EXPAND) #add buttons for images self.contentSizer.Add(self.addButton(SpriteLib.Alien(1), "1")) self.contentSizer.Add(self.addButton(SpriteLib.Alien(2), "2")) self.contentSizer.Add(self.addButton(SpriteLib.Alien(3), "3")) self.contentSizer.Add(self.addButton(SpriteLib.Alien(4), "4")) self.contentSizer.Add(self.addButton(SpriteLib.Alien(5), "5")) self.contentSizer.Add( self.addButton(SpriteLib.EnviornmentComponent(1), "Env1")) b = wx.Button(self, 10, "Save Level", (20, 20)) self.Bind(wx.EVT_BUTTON, self.OnSaveClick, b) b.SetDefault() b.SetSize(b.GetBestSize()) self.contentSizer.Add(b) self.mainSizer.Add(self.contentSizer) self.SetSizer(self.mainSizer) self.levelPanel.SetupScrolling()
def doGamePlay(self): #update level data envImages, enemies = self._currentLevel.update(1) for envImage in envImages: SpriteLib.EnviornmentComponent( int(envImage.type), self._screenRect, (-100, envImage.xPos), (envImage.movementX, envImage.movementY)) for enemy in enemies: SpriteLib.Alien(int(enemy.type), self._screenRect, (-10, enemy.xPos)) #get key state keystate = pygame.key.get_pressed() #handle player movement self._spaceShip.handleInput(keystate) #Temp - for testing if keystate[K_q]: SpriteLib.Alien(1, self._screenRect, (10, 10)) if keystate[K_w]: SpriteLib.Alien(2, self._screenRect, (50, 10)) if keystate[K_h]: SpriteLib.Alien(3, self._screenRect, (70, 10)) if keystate[K_o]: SpriteLib.Alien(4, self._screenRect, (10, 10)) if keystate[K_y]: SpriteLib.PowerUp(self._screenRect, self._screen, (0, 50), (0, 10), 1) if keystate[K_k]: SpriteLib.Alien(5, self._screenRect, (10, 10)) #Collision Detection - shots vs aliens collision = pygame.sprite.groupcollide(self._playerShotsGroup, self._aliensGroup, False, False) for shot in collision.iterkeys(): if pygame.sprite.collide_mask(shot, collision[shot][0]): shot.hit(collision[shot][0]) shot.kill() #Collision Detection - shots vs background pygame.sprite.groupcollide(self._playerShotsGroup, self._backgroundGroup, True, False, pygame.sprite.collide_mask) #Collision Detection - player vs aliens for alien in pygame.sprite.spritecollide(self._spaceShip, self._aliensGroup, False): if alien.hit(self._spaceShip): #game over - TODO, menu system print "Game Over!!!" return self._interface.setHitPoints(self._spaceShip.getMaxHP(), self._spaceShip.getHP()) alien.kill() #Collision Detection - player vs background for backgroundImage in pygame.sprite.spritecollide( self._spaceShip, self._backgroundGroup, False): if pygame.sprite.collide_mask(self._spaceShip, backgroundImage): if backgroundImage.hit(self._spaceShip): print "ouch." return self._interface.setHitPoints(self._spaceShip.getMaxHP(), self._spaceShip.getHP()) # clear/erase the last drawn sprites self._allGroup.clear(self._screen, self._background) #update all the sprites self._allGroup.update() #draw the scene dirty = self._allGroup.draw(self._screen) #pygame.display.update(dirty) pygame.display.update()