def __init__(self, pos: numpy.array, model: str, scaleConst: Tuple[float, float], updateInterval: int, probability: float, powerCache: Dict): self.model = model self.probability = probability self.spritePath = Path('Assets') / Path('Images') / Path( 'Sprites') / Path('PowerUps') / Path(self.model) / Path('Solid') self.powerCache = powerCache def imageLoader(inPath: Path): image = self.powerCache[inPath] return image self.Images = imageGroup.ImageGroup(imageFolderPath=self.spritePath, imageLoader=imageLoader) self.Sprite = Sprite.Sprite(self.Images, scaleConst, updateInterval, (pos[0], pos[1])) if Cs.BLOOM: self.bloomPath = Path('Assets') / Path('Images') / Path( 'Sprites') / Path('PowerUps') / Path( self.model) / Path('Bloom') self.bloomImages = imageGroup.ImageGroup( imageFolderPath=self.bloomPath, imageLoader=imageLoader) self.bloomSprite = Sprite.Sprite(self.bloomImages, scaleConst, updateInterval, (pos[0], pos[1])) super().__init__(posVector=pos, sprite=self.Sprite, limPos=numpy.array(Cs.GameStage), angularAcc=0, angularSpeed=0, angularDisplacement=0)
class Bonus: def __init__(self, pos, bonus, image): self.__bonus_info = ImageInfo([45, 45], [90, 90], 40) self.pos = [pos[0],pos[1]] self.type = bonus self.angle = 0 self.angle_vel = 0.003 self.sprite = Sprite(pos, [0.0, 0.0], self.angle, self.angle_vel, image, self.__bonus_info, WIDTH, HEIGHT) def get_sprite(self): return self.sprite def get_bonus_type(self): return self.type def get_position(self): return self.pos def update(self): self.sprite.update() def draw(self, canvas): #angle self.angle += self.angle_vel #position (static) self.pos[0] += self.pos[0] self.pos[1] += self.pos[1] self.sprite.draw(canvas) def collide(self, other_object): return self.sprite.collide(other_object)
def __init__(self, posn, width, height=None): self.title = Sprite.TextDisplayer() self.title.setText("Tile Info") self.displayers = [self.title] self.numBoxes = 8 self.outputBoxes = [ Sprite.TextDisplayer() for i in xrange(0, self.numBoxes) ] self.outputTitles = [ Sprite.TextDisplayer() for i in xrange(0, self.numBoxes) ] self.outputTitles[0].setText("Tag:") self.outputTitles[1].setText("Top Texture:") self.outputTitles[2].setText("Top Color:") self.outputTitles[3].setText("Side Textures:") self.outputTitles[4].setText("Side Colors:") self.outputTitles[5].setText("") self.outputTitles[6].setText("") self.outputTitles[7].setText("") for i in xrange(0, len(self.outputBoxes)): if len(self.outputTitles[i].getText()) > 0: self.displayers.append(self.outputTitles[i]) self.displayers.append(self.outputBoxes[i]) self.posn = posn self.width = width self.height = height self.borderListID = -1 self.borderTexture = -1 self._showing = False
def load_map(water_coord, zones): #map load #n^2 operation can I make it more efficient? new_path = os.path.relpath('..\\maps\\map1.txt') mapFile = open(new_path) map_array = [] #create map_array for row in mapFile: row = row.strip() row_array = [] if row[0] == "#": #First checks the line if it designates a zone #Zone line format is "#x1-x2,y1-y2" with x1 and y1 < x2 and y2 respectively dashx = row.find("-", 1) dashy = row.find("-", dashx + 1) sep = row.find(",") zones.append( Zone(int(row[1:dashx]), int(row[dashx + 1:sep]), int(row[sep + 1:dashy]), int(row[dashy + 1:]))) else: for tile in row: row_array.append(tile) map_array.append(row_array) for i in range(len(map_array)): for j in range(len(map_array[0])): tile = map_array[i][j] if tile == "*": map_array[i][j] = Sprite((j, i), green) elif tile == "b": map_array[i][j] = Sprite((j, i), brown) elif tile == "w": map_array[i][j] = Sprite((j, i), water_blue) water_coord.append((j, i)) return map_array
def game_init(self): #游戏初始化 pygame.init() #设置游戏屏幕大小 self.screen = pygame.display.set_mode((cfg.sc_width, cfg.sc_height)) #设置游戏标题 pygame.display.set_caption("打砖块游戏") #设置游戏字体 self.font = pygame.font.Font(None, 36) #设置游戏时钟 self.timer = pygame.time.Clock() #设置游戏相关精灵组 self.paddle_group = pygame.sprite.Group() self.block_group = pygame.sprite.Group() self.ball_group = pygame.sprite.Group() #加载挡板并设置位置 self.paddle = Sprite(self.screen) self.paddle.load("pic/paddle.png") self.paddle.set_pos((250, 460)) self.paddle_group.add(self.paddle) #加载小球并设置位置 self.ball = Sprite(self.screen) self.ball.load("pic/ball.png") self.ball.set_pos((250, 450)) self.ball_group.add(self.ball)
def set_up_stats(self): self.killslabel = Sprite.Text( 50, 50, pygame.font.Font('assets/fonts/joystix.ttf', 24), "Kills", (255, 255, 255)) self.killsamount = Sprite.Text( 300, 50, pygame.font.Font('assets/fonts/joystix.ttf', 24), str(ScreenManager.playerStats.kills), (255, 223, 0)) self.gameplayedlabel = Sprite.Text( 50, 80, pygame.font.Font('assets/fonts/joystix.ttf', 24), "Games Played", (255, 255, 255)) self.gameplayedamount = Sprite.Text( 300, 80, pygame.font.Font('assets/fonts/joystix.ttf', 24), str(ScreenManager.playerStats.gamesPlayed), (255, 223, 0)) self.totaltimelabel = Sprite.Text( 50, 110, pygame.font.Font('assets/fonts/joystix.ttf', 24), "Time Played", (255, 255, 255)) self.totaltimeamount = Sprite.Text( 300, 110, pygame.font.Font('assets/fonts/joystix.ttf', 24), str(ScreenManager.playerStats.totalPlaytime // 1000) + " seconds", (255, 223, 0)) self.longestgamelabel = Sprite.Text( 50, 140, pygame.font.Font('assets/fonts/joystix.ttf', 24), "Longest Game", (255, 255, 255)) self.longestgameamount = Sprite.Text( 300, 140, pygame.font.Font('assets/fonts/joystix.ttf', 24), str(ScreenManager.playerStats.longestGame // 1000) + " seconds", (255, 223, 0)) self.failedwordslabel = Sprite.Text( 50, 170, pygame.font.Font('assets/fonts/joystix.ttf', 24), "Words Failed", (255, 255, 255)) self.failedwordsamount = Sprite.Text( 300, 170, pygame.font.Font('assets/fonts/joystix.ttf', 24), str(ScreenManager.playerStats.failedWords), (255, 223, 0))
def reset(self): self.sprites = [] for x in range(20): self.sprites.append(Sprite(self.rm.getAnimation("ahhh"), self.size)) for x in range(20): self.sprites.append( Sprite(self.rm.getImage("cronoflip"), self.size))
def draw(ship): for startPoint, endPoint, color, forShip in vectorsToDraw: if ship == forShip: length = vectorDistance(startPoint, endPoint) rotation = vectorDirection(vectorOffset(endPoint, startPoint)) scale = length / 200.0 Sprite.draw("vector-%s" % (color,), position=startPoint, scale=scale, rotation=rotation)
def start(surface, hasLog=False, notBeginning=False): global running, dest_x, dest_y running = True background = Level.Level( pygame.image.load(os.path.join("images", "forest_1.jpg"))) player = Sprite.Sprite( pygame.image.load(os.path.join("images", "frank.png"))) fire = Sprite.Sprite(pygame.image.load(os.path.join("images", "fire.gif"))) cursor = POINT TEXT = "" isEnd = False initializeSprites(player, fire) addObjects(background) if (notBeginning): player_x, player_y = 647, 640 dest_x, dest_y = 647, 720 else: player_x, player_y = 1050, 900 fire_thread = threading.Thread(target=changeFire, args=(fire, )) frank_thread = threading.Thread(target=changeFrank, args=(player, )) fire_thread.start() frank_thread.start() while (running): m_x, m_y = pygame.mouse.get_pos() handleEvents((m_x, m_y)) player_x, player_y = move(player_x, player_y, player, background) if (background.doors["door"].collidepoint((m_x, m_y))): cursor = ARROW elif (background.grabs["fire"].collidepoint((m_x, m_y))): cursor = GRAB TEXT = "\"...I was in the greatest fear lest my fire should be extinguished.\"" else: cursor = POINT TEXT = "" p_rect = pygame.Rect(player_x, player_y, player.width, player.height) if (hasLog and p_rect.colliderect(background.grabs["fire"]) and background.grabs["fire"].collidepoint((dest_x, dest_y))): fire.setY(100) end_thread = threading.Thread(target=end) end_thread.start() if (p_rect.colliderect(background.doors["door"]) and background.doors["door"].collidepoint((dest_x, dest_y))): running = False return False bottom_text = smallFont(TEXT, (255, 255, 255)) surface.blit(background.image, (0, 0)) if (player_y + player.height - player.y <= 825 + fire.height): surface.blit(player.image, (player_x, player_y), (player.crop())) surface.blit(fire.image, (300, 825), (fire.crop())) else: surface.blit(fire.image, (300, 825), (fire.crop())) surface.blit(player.image, (player_x, player_y), (player.crop())) surface.blit(bottom_text, ((1280 - bottom_text.get_width()), (960 - bottom_text.get_height()))) surface.blit(cursor, (m_x + (cursor.get_width() / 2), m_y + (cursor.get_height() / 2))) pygame.display.flip() return True
def create_settler(self, x, y): """ Adds a settler to be drawn on the screen at position x, y and returns a reference to this settler. """ sprite = Sprite (self.viewspace, self.settsurf) sprite.x = x sprite.y = y sprite.configAnimation (True, 0, 24, 25) self.sprites.append(sprite) return sprite
def main(): #creating a TK object, putting a canvas element on it tk = Tk() tk.title("Game demo") canvas = Canvas(tk, width=550, height=400, bd=0, highlightthickness=0) canvas.pack() tk.update() #creating the two sprites using test.gif sprite1 = Sprite(canvas, "test.gif", 1, 1, [75, 75]) sprite2 = Sprite(canvas, "test.gif", 2, 2, [300, 300]) keepGoing = True #loop to run the program, checks for a collision, and updates canvas while keepGoing: if (sprite1.checkCollision(sprite2)): print("collision") sprite1.draw() sprite2.draw() tk.update_idletasks() tk.update() #ms delay between frames time.sleep(0.10)
def loadSprites(self): # Creating an instance of the map class. level1 is now a Map object. level1 = Map.Map() # Calling the layout function from the Map class. Returns a double matrix full of numbers. layout = level1.getLayout() # Calling the getSprites function from the Map class. Returns a list full of images with their respective paths. img_list = level1.getSprites() # Calculating the centers of each block size. x_offset = (level1.BLOCK_SIZE / 2) + 220 y_offset = (level1.BLOCK_SIZE / 2) # Creating a double matrix that goes through the double matrix from layout. Should go column by column. for row in range(len(layout)): for col in range(len(layout[row])): # Calculating the center point of each rect. center_point = [(col * level1.BLOCK_SIZE) + x_offset, (row * level1.BLOCK_SIZE) + y_offset] # center_point = [(col * level1.BLOCK_SIZE), (row * level1.BLOCK_SIZE)] # Checking to see if the index variable is equal to the saved block variable. if layout[row][col] == level1.BLOCK: # Create a block sprite and add it to a sprite group. self.block_sprites.add( Sprite.Sprite(center_point, img_list[0]) ) # Hard coding 0 into this. Should be level1.BLOCK # Create an equivalent rect of the wall and add it to an array. self.walls.append( pygame.Rect(center_point[0] - (level1.BLOCK_SIZE / 2), center_point[1] - (level1.BLOCK_SIZE / 2), level1.BLOCK_SIZE, level1.BLOCK_SIZE)) # Checking to see if the index variable is equal to the saved PACMAN variable. elif layout[row][col] == level1.PACMAN: # Create an object of the Pacman class and save it to the pacman variable. self.pacman = Pacman(center_point, img_list[1], level1.BLOCK_SIZE) # Adding an equivalent Sprite to a sprite group. THIS MAY NOT BE NECESSARY self.pacman_sprite_group.add( Sprite.Sprite(center_point, img_list[1])) # Checking to see if the index variable is equal to the saved FOOD variable. elif layout[row][col] == level1.FOOD: # Creating sprites and adding them to a sprite group. self.food_sprites.add( Sprite.Sprite(center_point, img_list[2])) elif layout[row][col] == level1.Ghost1: # Create an object of the Ghost class and save it to the ghost1 variable. self.ghost1 = Ghost(center_point, img_list[3], level1.BLOCK_SIZE) elif layout[row][col] == level1.Ghost2: self.ghost2 = Ghost(center_point, img_list[4], level1.BLOCK_SIZE) elif layout[row][col] == level1.Ghost3: self.ghost3 = Ghost(center_point, img_list[5], level1.BLOCK_SIZE)
def __init__(self, posn, width): self.numBoxes = 1 title = Sprite.TextDisplayer() title.setText("Add Tag Dialog") inputBoxes = [InputBox() for i in xrange(0, self.numBoxes)] inputTitles = [ Sprite.TextDisplayer() for i in xrange(0, self.numBoxes) ] inputTitles[0].setText("Filename:") Dialog.__init__(self, title, inputBoxes, inputTitles, posn, width) self.state = 0
def __init__(self): self.player = None self.computer = None self.wooden_button = ShopButton( Sprite.Sprite(pygame.image.load('images/WoodenButton.png')), WOODEN, self, 233, 32) self.bronze_button = ShopButton( Sprite.Sprite(pygame.image.load('images/BronzeButton.png')), BRONZE, self, 305, 32) self.silver_button = ShopButton( Sprite.Sprite(pygame.image.load('images/SilverButton.png')), SILVER, self, 377, 32)
def __init__(self, w, h, playerStats): super().__init__(w, h) self.tmpStats = GameStats.GameStats() self.gameover = False self.backbuffer = pygame.Surface((640, 360)) self.backbuffer.fill((0, 0, 0)) self.backbuffer.set_alpha(200) self.gameoverlabel = Sprite.Text( 320, 80, pygame.font.Font('assets/fonts/Bungee-Regular.ttf', 48), "Game Over", (255, 0, 0)) self.gameoverlabel.set_draw_to_center() self.replaybutton = Sprite.TextButton( 320, 180, pygame.font.Font('assets/fonts/joystix.ttf', 24), "Restart Game", (255, 255, 255)) self.replaybutton.set_draw_to_center() self.backbutton = Sprite.TextButton( 320, 240, pygame.font.Font('assets/fonts/joystix.ttf', 24), "Back To Title", (255, 255, 255)) self.backbutton.set_draw_to_center() self.background = pygame.image.load('assets/desertbg.png') self.ground = pygame.image.load('assets/ground.png') self.barrier = Sprite.Barrier(60, 172, 64, 128) self.shooter = Sprite.Shooter(20, 180, 64, 64) self.textinput = pygame_textinput.TextInput( '', 'assets/fonts/joystix.ttf', 20, True, (255, 255, 255), (0, 0, 1), 400, 35, 9) self.totaltime = 0 self.timelabel = Sprite.Text( 420, 310, pygame.font.Font('assets/fonts/Bungee-Regular.ttf', 16), 'Time Elapsed: ', (255, 255, 255)) self.timeamount = Sprite.Text( 580, 310, pygame.font.Font('assets/fonts/Bungee-Regular.ttf', 16), '0', (255, 255, 255)) self.zombieskilled = 0 self.zombieskilledlabel = Sprite.Text( 420, 330, pygame.font.Font('assets/fonts/Bungee-Regular.ttf', 16), 'Zombies Killed: ', (255, 255, 255)) self.zombieskilledamount = Sprite.Text( 580, 330, pygame.font.Font('assets/fonts/Bungee-Regular.ttf', 16), '0', (255, 255, 255)) self.difficultylabel = Sprite.Text( 620, 20, pygame.font.Font('assets/fonts/Bungee-Regular.ttf', 16), '1', (255, 255, 255)) self.ticksToNextZombie = randint(20, 60) self.set_up_game()
def __init__(self): self.step1_sound = pygame.mixer.Sound('assets/sfx/step1.wav') self.step2_sound = pygame.mixer.Sound('assets/sfx/step2.wav') self.flight1_sound = pygame.mixer.Sound('assets/sfx/flight.aiff') #self.flight2_sound = pygame.mixer.Sound('assets/sfx/flight2.mp3') self.hit_sound = pygame.mixer.Sound('assets/sfx/hit.wav') #self.win_sound = pygame.mixer.Sound('assets/sfx/win.wav') self.baton_sprite = Sprite.Sprite( pygame.image.load('assets/sprites/baton.png')) self.duck_sprite = Sprite.Sprite( pygame.image.load('assets/sprites/duck.jpg')) self.duck2_sprite = Sprite.Sprite( pygame.image.load('assets/sprites/duck2.png'))
def __init__(self): self.current_state = 2 self.card_on_hand = None # <Sprites> Спрайты self.gameBoard = pygame.image.load('images/gameBoard.png') # </Sprites> # <GameThings> Разное self.shop = Shop.Shop() self.computer = AI.AI(self.shop) self.computer.tower = Tower.Tower(self.computer, False) self.player = Player.Player("abc", self.shop, self.computer) self.player.tower = Tower.Tower(self.player, True) self.computer.opponent = self.player self.shop.player = self.player self.shop.computer = self.computer self.timer = Timer(20) self.end_turn = False # </GameThings> # <GameButtons> self.end_turn_button = GameButton( Sprite.Sprite(pygame.image.load('images/EndTurnButton.png')), 750, 12) self.delete_card_button = GameButton( Sprite.Sprite(pygame.image.load('images/DeleteButton.png')), 960, 569) # </GameButtons> # <Cards> Карты self.all_cards = [] self.player.cards = [] #Предлагаю складывать карты не по номерам, а по ссылкам #Ссылки в python есть! #Сделать! #for i in range(0, 5): # card_ = Card.Card(...) # player.cards.append(card_) # </Cards> #<Временное> self.getStartCards()
def __init__(self, fullscreen, width): """Initializes the main window.""" global _mainWindow _mainWindow = self self._input = Input.Input(0) self._limitFPS = True self._fullscreen = fullscreen self._fullscreenSize = self._chooseDisplaySize() self._defaultSize = (width, width * 3 / 4) if fullscreen: self._size = self._fullscreenSize else: self._size = self._defaultSize self._fpsDisplayer = Sprite.FPSDisplayer() self._delegate = None self._soundEnabled = True pygame.display.set_icon(Resources.image("icon-32")) self._setDisplayMode() self._resize() self._initOpenGL() if self._fullscreen: pygame.mouse.set_pos((0, 0))
def load_settings(): screen_size = (700, 550) screen = pygame.display.set_mode(screen_size) game_object = { 'player': [], 'tile': [], 'collider': [], 'bg': [], 'objective': [] } var = { 'folder': os.path.dirname(os.path.realpath(__file__)), 'total_maps': len( os.listdir( os.path.dirname(os.path.realpath(__file__)) + '/assets/img/map')), 'camera': [Camera(screen_size)] } game_object['bg'].append( Sprite((0, 0), var['folder'] + '/assets/img/tile/bg.png')) game_object['bg'][0].img = pygame.transform.scale(game_object['bg'][0].img, screen_size) return { 'screen_size': screen_size, 'screen': screen, 'game_object': game_object, 'var': var, 'layers': ['bg', 'tile', 'player', 'objective'] }
def __init__(self, x=const.SCREEN_W / 2, y=const.SCREEN_H / 2, speed=const.PLAYER_SPEED): super().__init__( x, y, speed, Sprite( [pygame.image.load("images/Rabbit_Idle_Front.png")], #standing [pygame.image.load("images/Rabbit_Idle_Left.png")], #left [pygame.image.load("images/Rabbit_Idle_Right.png")], #right [pygame.image.load("images/Rabbit_Idle_Back.png")], #up [pygame.image.load("images/Rabbit_Idle_Front.png")])) #down # amount of time after death player is invuln self.last_move = LEFT self.invuln = 0 self.spawn_at = None self.death_sequence = [ pygame.image.load("images/Rabbit_Death_1.png"), pygame.image.load("images/Rabbit_Death_2.png"), pygame.image.load("images/Rabbit_Death_3.png"), pygame.image.load("images/Rabbit_Death_4.png"), pygame.image.load("images/Rabbit_Death_5.png"), pygame.image.load("images/Rabbit_Death_6.png"), pygame.image.load("images/Rabbit_Death_7.png"), pygame.image.load("images/Rabbit_Death_8.png") ]
def update(self, dt): for ent, (transform, rend, trail) in self.world.get_components(Transform, Renderable, Trail): min_dist, min_dist_sprite = math.inf, None for handle in trail.list: sprite = rend.get_sprite(handle) sprite.transform.scale -= ((trail.max_trail_scale - trail.min_trail_scale) / trail.trail_lifetime) * dt sprite.opacity -= (1 / trail.trail_lifetime) * dt dist = transform.pos.subbed_by(sprite.get_absolute_pos(transform.pos)).magnitude() if dist < min_dist: min_dist = dist min_dist_sprite = sprite if min_dist_sprite and min_dist < trail.next_trail_distance: min_dist_sprite.opacity = 1 min_dist_sprite.transform.scale = trail.max_trail_scale else: handle = rend.add_sprite(Sprite("tail", -1, False, Transform(transform.pos.copy(), scale=trail.max_trail_scale))) trail.add(handle) for i in reversed(range(len(trail.list))): handle = trail.list[i] sprite = rend.get_sprite(handle) if sprite.opacity <= 0: trail.pop(i) rend.remove_sprite(handle)
def update(keysPressed, leftClicked, mousePos, projectiles, effects, enemies, houses): #print(str(int(clock.get_fps()))) Level.map.update() Level.shop.update(mousePos, leftClicked, Fighter.player.inv.gold) Level.skinsShop.update(mousePos, leftClicked, Fighter.player.level) #Level.towerShop.update(mousePos, leftClicked, Fighter.player.inv.gold) houseSum = 0 for h in houses: h.update(enemies, projectiles) houseSum += h.hp Fighter.player.update(keysPressed, leftClicked, mousePos, enemies, projectiles) Level.wave.update(keysPressed, enemies) for en in enemies: en.update(projectiles) if en.defeated: enemies.remove(en) Fighter.player.inv.gold += 1 Fighter.player.xp += 20 for e in effects: e.update() if e.complete: effects.remove(e) for p in projectiles: p.update(width, height, effects) if p.complete: projectiles.remove(p) effects.append(Sprite.Anim(p.x, p.y, Sprite.exSprites, .5)) if Fighter.player.hp <= 0 or houseSum <= 0: return 'GameOver'
def __init__(self, health, strength, magic, speed, defense, resistance, name, position, hit_chance, crit_chance, image="pika.png"): #health is a tuple self.current_health = health self.max_health = health self.strength = strength self.magic = magic self.speed = speed self.defense = defense self.resistance = resistance self.name = name self.position = position self.weapon = None self.alive = True #sprite self.sprite = Sprite(position, image) #temporary self.hit_chance = 1 self.crit_chance = 0 self.zone = 0
def createDino(): dinosaur = Sprite.Dinosaur(dino_posx, dino_posy, 0, jump_aceleration, down_aceleration) dinosaur.setSprites(dinosaur_walk_sprite, dinosaur_crouch_sprite) dinosaur.setDinoHitBox(dino_lenght_walk, dino_height_walk, dino_lenght_crouch, dino_height_crouch) return dinosaur
def reset(self): self.sprites=[] #for x in range (20): # self.sprites.append(Sprite(self.rm.getAnimation("ahhh"),self.size)) #for x in range (20): # self.sprites.append(Sprite(self.rm.getImage("cronoflip"),self.size)) for x in range(1): self.player = Sprite(self.rm.getAnimation("left"), self.size)
def __init__(self, pos: numpy.array, angularDisplacement: float, model: str, moveset: Dict[str, int]): self.model = model self.spritePath = Path('Assets') / Path('Images') / Path( 'Sprites') / Path('Spaceship') / Path(model) / Path('Solid') def imageLoader(inPath: Path): image = pygame.image.load(str(inPath)).convert_alpha() return image self.Images = imageGroup.ImageGroup(imageFolderPath=self.spritePath, imageLoader=imageLoader) self.Sprite = Sprite.Sprite(self.Images, Cs.spaceshipScaleConst, Cs.spacehipUpdateInterval, (pos[0], pos[1])) self.bloomImagePath = Path('Assets') / Path('Images') / Path( 'Sprites') / Path('Spaceship') / Path(model) / Path('Bloom') self.bloomImages = imageGroup.ImageGroup( imageFolderPath=self.bloomImagePath, imageLoader=imageLoader) self.bloomSprite = Sprite.Sprite(self.bloomImages, Cs.spaceshipScaleConst, Cs.spacehipUpdateInterval, (pos[0], pos[1])) self.thrustOn = False self.health = self.maxHealth = Cs.DEFAULTMAXHEALTH self.damagePerBullet = Cs.DEFAULTDAMAGE self.bulletSpeed = Cs.DEFAULTBULLETSPEED if Cs.GRAVITYON: self.bulletSpeed = Cs.GRAVBULLETSPEED self.bulletSpeedLim = Cs.BULLETSPEEDLIMIT self.thrustKey = moveset['THRUST'] self.leftKey = moveset['LEFT'] self.rightKey = moveset['RIGHT'] self.shootKey = moveset['SHOOT'] self.damageDamp = Cs.DEFAULTDAMAGEDAMP self.piercingBullets = False super().__init__(sprite=self.Sprite, angularDisplacement=angularDisplacement, angularSpeed=0., angularAcc=0., posVector=pos, limPos=numpy.array(Cs.GameStage), limVelScalar=Cs.SPEEDLIMIT, limAngularSpeed=Cs.ROTATELIM)
def add_zombie(self): y = randint(140, 240) zombie = Sprite.Zombie(650, y, 64, 64) zombie.set_speed(randint(1, 1 + (self.difficulty // 3))) zombie.active = True zombie.walking = True zombie.set_word(self.get_new_word()) self.zombies.append(zombie) self.zombies.sort(key=lambda z: z.y)
def __init__(self, posn, width): self.numBoxes = 7 title = Sprite.TextDisplayer() title.setText("Edit Tag Dialog") inputBoxes = [InputBox() for i in xrange(0, self.numBoxes)] inputTitles = [ Sprite.TextDisplayer() for i in xrange(0, self.numBoxes) ] inputTitles[0].setText("Texture:") inputTitles[1].setText("Color:") inputTitles[2].setText("") inputTitles[3].setText("") inputTitles[4].setText("ColorVar:") inputTitles[5].setText("") inputTitles[6].setText("") Dialog.__init__(self, title, inputBoxes, inputTitles, posn, width) self.state = 0 self.tagName = None
def __init__(self, pos, bonus, image): self.__bonus_info = ImageInfo([45, 45], [90, 90], 40) self.pos = [pos[0],pos[1]] self.type = bonus self.angle = 0 self.angle_vel = 0.003 self.sprite = Sprite(pos, [0.0, 0.0], self.angle, self.angle_vel, image, self.__bonus_info, WIDTH, HEIGHT)
def load_level(self): #清空砖块精灵组 self.block_group.empty() for by in range(0, 10): for bx in range(0, 10): #加载砖块并设置每个砖块的位置 self.block = Sprite(self.screen) self.block.load("pic/blocks.png", 58, 29, 4) x = 5 + bx * (self.block.frame_width + 1) y = 30 + by * (self.block.frame_height + 1) self.block.set_pos((x, y)) #检测不需要加载砖块的位置 num = cfg.levels[cfg.level][by * 10 + bx] self.block.first_frame = num - 1 self.block.last_frame = num - 1 if num > 0: self.block_group.add(self.block)
def __init__(self,xpos,ypos,filename,callsign): Sprite.__init__(self,xpos,ypos,filename) self.x = xpos self.y = ypos self.x_vel = 0 self.y_vel = 0 self.loaded_image = image.load(filename) self.loaded_image.set_colorkey((0,0,0)) self.ac_speed = 0 self.rotate = 0 self.ac_heading = 0 self.strVelocity = "" self.namefont = font.Font(None, 15) self.nametext = [] self.speedfont = font.Font(None, 15) self.speedtext = [] self.callsign = callsign self.nametext = self.namefont.render(self.callsign, True, (0,255,0),(0,0,0))
class World: def __init__(self,size,rm): self.player = None self.rm=rm self.size=size self.s = size self.reset() def reset(self): self.sprites=[] #for x in range (20): # self.sprites.append(Sprite(self.rm.getAnimation("ahhh"),self.size)) #for x in range (20): # self.sprites.append(Sprite(self.rm.getImage("cronoflip"),self.size)) for x in range(1): self.player = Sprite(self.rm.getAnimation("left"), self.size) def update(self,dtime): self.player.update(dtime) for s in self.sprites: s.update(dtime) def draw(self,screen): for s in self.sprites: s.draw(screen) self.player.draw(screen) def jump(self): """Causes the player to start jumping""" pass def left(self): """starts the player from moving to the left""" self.player.velocity[0] = -30.0 def right(self): """starts moving the player to the right""" self.player.velocity[0] = 30.0 def stop(self): """stops the player sprite from moving horizontally""" self.player.velocity[0] = 0.0
def __init__(self, xpos, ypos, filename, callsign): Sprite.__init__(self, xpos, ypos, filename) self.x = xpos self.y = ypos self.x_vel = 0 self.y_vel = 0 self.loaded_image = image.load(filename) self.loaded_image.set_colorkey((0, 0, 0)) self.ac_speed = 0 self.rotate = 0 self.ac_heading = 0 self.strVelocity = "" self.namefont = font.Font(None, 15) self.nametext = [] self.speedfont = font.Font(None, 15) self.speedtext = [] self.callsign = callsign self.nametext = self.namefont.render(self.callsign, True, (0, 255, 0), (0, 0, 0))
def __init__(self, pos: numpy.array, angle: float, model: str, parent: Spaceship, bulletSpeed: float, killOnImpact: bool, bulletCache: Dict[Path, pygame.Surface], speedLim): self.pos = pos + Cs.BULLETSPAWNDIST * numpy.array( [sin(radians(angle)), cos(radians(angle))]) self.angularDisplacement = angle self.parent = parent self.spritePath = Path('Assets') / Path('Images') / Path( 'Sprites') / Path('Bullet') / Path(model) / Path('Solid') self.bloomSpritePath = Path('Assets') / Path('Images') / Path( 'Sprites') / Path('Bullet') / Path(model) / Path('Bloom') self.bulletCache = bulletCache def imageLoader(inPath: Path): image = self.bulletCache[inPath] return image self.Images = imageGroup.ImageGroup(imageFolderPath=self.spritePath, imageLoader=imageLoader) self.Sprite = Sprite.Sprite(self.Images, Cs.bulletScaleConst, Cs.bulletUpdateInterval, (pos[0], pos[1])) self.bloomImages = imageGroup.ImageGroup( imageFolderPath=self.bloomSpritePath, imageLoader=imageLoader) self.bloomSprite = Sprite.Sprite(self.bloomImages, Cs.bulletScaleConst, Cs.bulletUpdateInterval, (pos[0], pos[1])) self.bulletHalfHeight = self.Sprite.currentRect.h / 2 self.angularDisplacement = angle self.damage = parent.damagePerBullet self.offScreen = False self.killOnImpact = killOnImpact super().__init__(posVector=self.pos, velVector=bulletSpeed * self.headDirectionVector, sprite=self.Sprite, angularDisplacement=angle, angularSpeed=0, angularAcc=0, limVelScalar=speedLim)
def __init__(self, w, h): super().__init__(w, h) self.title = Sprite.Text( 320, 80, pygame.font.Font('assets/fonts/Bungee-Regular.ttf', 48), "Typing Adventure", (255, 255, 255)) self.title.set_draw_to_center() self.startbutton = Sprite.TextButton( 320, 180, pygame.font.Font('assets/fonts/Bungee-Regular.ttf', 24), "Start Game", (255, 255, 255)) self.startbutton.set_draw_to_center() self.statsbutton = Sprite.TextButton( 320, 230, pygame.font.Font('assets/fonts/Bungee-Regular.ttf', 24), "Player Stats", (255, 255, 255)) self.statsbutton.set_draw_to_center() self.exitbutton = Sprite.TextButton( 320, 280, pygame.font.Font('assets/fonts/Bungee-Regular.ttf', 24), "Exit", (255, 255, 255)) self.exitbutton.set_draw_to_center()
def showActionPerformed(self, abilityID): action = engine.Ability.Ability.get[abilityID] unit = self.unit self.setTopText(action.name()) Sound.action(action.sound(unit.attack())) # FIXME: don't compare against the string name! Will break # when "Attack" is translated if action.name() == "Attack": ud = self.unitDisplayer(unit) attDisp = Sprite.AttackDisplayer(unit, 0.0) ud.addAnimation(attDisp)
def showEffect(self, targetID, effect, delay): target = self.scenario.unitFromID(targetID) ud = self.unitDisplayer(target) if isinstance(effect, engine.Effect.MissResult): dd = Sprite.DamageDisplayer(_("Miss"), Sprite.NEUTRAL, delay) ud.addAnimation(dd) elif (isinstance(effect, engine.Effect.DamageResult) or isinstance(effect, engine.Effect.DamageSPResult)): dd = Sprite.DamageDisplayer(effect.damage, Sprite.NEGATIVE, delay) ud.addAnimation(dd) elif isinstance(effect, engine.Effect.HealResult): dd = Sprite.DamageDisplayer(effect.damage, Sprite.BENEFICIAL, delay) ud.addAnimation(dd) elif isinstance(effect, engine.Effect.StatusResult): effectName = engine.Effect.Status.effectNames[effect.type] effectType = Sprite.NEGATIVE if engine.Effect.Status.beneficial(effect): effectType = Sprite.BENEFICIAL dd = Sprite.DamageDisplayer(effectName, effectType, delay) ud.addAnimation(dd)
def drawSidebar(self): sidebarX = UserInterface.windowSize[0] - 240 / 2 sidebarY = UserInterface.windowSize[1] / 2 self.shipY = UserInterface.windowSize[1] - 30 for team in self.simulation.world.combatTeams: Sprite.draw("team-display-%d" % (team,), position=(sidebarX, self.shipY - 3), hud=True) Sprite.drawText( "Battle Fleet %d" % (team,), position=(sidebarX, self.shipY - 5), bold=True, align="center", color=(0, 0, 0, 255), ) self.shipY -= 35 for ship in self.simulation.world.combatTeams[team]: self.drawSidebarShip(ship) self.shipY -= 30 self.shipY -= 25
def inicializa(self,jogadores): """Inicializa elementos do menu""" self.width = pygame.display.get_surface().get_width() self.height = pygame.display.get_surface().get_height() pygame.mixer.Sound(os.path.join('.','Sons',"entradamenu.wav")).play() pygame.mixer.music.load(os.path.join('.','Musicas','menu.mp3')) pygame.mixer.music.set_volume(0.3) pygame.mixer.music.play(-1) self.font = pygame.font.Font(os.path.join('.','Imagens',"fonte.ttf"), int(self.height*0.08)) retratos = [] linha = [] pos = [self.width*0.2375,self.height*0.45] self.postitulo = [self.width*0.32,self.height*0.34] self.cor = 120 self.incrcor = 3 self.configcontrole = 0 #define posicoes dos retratos na tela for i in [string for string in os.listdir(os.path.join('.','Personagens')) if not string.startswith(".")]: x = pos[0] y = pos[1] linha.append(Retrato(i,(x,y))) pos[0] = pos[0] + 120 if (pos[0]+90) >= self.width: pos[1] = pos[1] + 160 pos[0] = self.width*0.2375 retratos.append(linha[:]) linha = [] #se o numero de personagens ultrapassa o limite de tamanho da tela para de ler if (pos[1] + 120) >= self.height: break if len(linha) > 0: retratos.append(linha[:]) self.retratos = retratos self.retratos[0][0].seleciona(1) self.retratos[0][0].seleciona(2) self.selecionadop1 = [0,0] self.selecionadop2 = [0,0] self.numcolunas = int((self.width-50)/120) self.fundo = Sprite(os.path.join('.','Imagens','menu.png'),(0,0),0,(self.width,self.height)) self.botoesp1 = jogadores[2] self.botoesp2 = jogadores[3]
def setWidth(self, width): self.imageReset = Sprite.scaleImage(self._imageReset, width, self.height) self.imageHover = Sprite.scaleImage(self._imageHover, width, self.height) self.imagePress = Sprite.scaleImage(self._imagePress, width, self.height) self._rect.width = self.imageReset.get_width() self.refresh()
def setHeight(self, height): self.imageReset = Sprite.scaleImage(self._imageReset, self.width, height) self.imageHover = Sprite.scaleImage(self._imageHover, self.width, height) self.imagePress = Sprite.scaleImage(self._imagePress, self.width, height) self._rect.height = self.imageReset.get_height() self.refresh()
def gameLoop(): #Score count = 0 randIndex = random.randrange(0,3) level_obj = Level(randIndex) level = level_obj.levels() brickList = [] #Set up a color for each row of the bricks. for y in range(len(level)): color = (random.randrange(50,200),random.randrange(50,200),random.randrange(50,100)) for x in range(len(level[y])): if (level[y][x] == 1): brickList.append(Brick(x*32, y*32,color)) gameExit = False gameOver = False cur_x_1 = 400 cur_y_1 = 550 cur_x_2 = 20 cur_y_2 = 300 x_change_1=0 y_change_1=0 x_change_2=0 y_change_2=0 ball_x=random.randrange(250,400) ball_y=random.randrange(250,500) #To initialize the sprite object. spriteball = Sprite(ball_x, ball_y) #dx=random.randrange(3,5) #dy=random.randrange(3,5) dy = 7 dx = 7 while not gameExit: pygame.draw.circle(gameDisplay, white, (0,0),10,0) if gameOver == True: message_to_screen("Game over",(0,255,150),-50,size = "large") message_to_screen("Press S to play again or Q to quit",white,50,size = "small") pygame.display.update() while gameOver == True: for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: gameExit = True gameOver = False if event.key == pygame.K_s: gameLoop() for event in pygame.event.get(): if event.type == pygame.QUIT: gameExit = True #Keyboard events. if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x_change_1=-15 y_change_1=0 elif event.key == pygame.K_RIGHT: x_change_1=15 y_change_1=0 elif event.key == pygame.K_UP: x_change_2=0 y_change_2=-15 elif event.key == pygame.K_DOWN: x_change_2=0 y_change_2=15 elif event.key == pygame.K_p: pause() if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: x_change_1 = 0 y_change_1 = 0 if event.key == pygame.K_UP or event.key == pygame.K_DOWN: x_change_2 = 0 y_change_2 = 0 cur_x_1+=x_change_1 cur_y_1+=y_change_1 cur_x_2+=x_change_2 cur_y_2+=y_change_2 if cur_x_1 >= 720: cur_x_1 = 720 if cur_x_1 <= 0: cur_x_1 = 0 if cur_y_2 >= 520: cur_y_2 = 520 if cur_y_2 <= 0: cur_y_2 = 0 #Collision with the sliders. a1,b1=detectCollisions(ball_x, ball_y, 10,10,cur_x_1, cur_y_1-12,80,10) if (ball_y + 10) > cur_y_1 and (ball_x+10 < cur_x_1 or ball_x > cur_x_1+80): a1 == False gameOver = True if a1 == True: dy*=-1 dx = dx + (ball_x - cur_x_1-40)/20 - x_change_1/3 #pygame.mixer.music.load('Sounds/Boing.mp3') #pygame.mixer.music.play(1) a2,b2 = detectCollisions(ball_x, ball_y, 10,10, cur_x_2,cur_y_2, 25,80) if a2==True: dx*=-1 dy = dy + (ball_y - cur_y_2 -40)/20 - y_change_2/3 #pygame.mixer.music.load('Sounds/Boing.mp3') #pygame.mixer.music.play(1) if ball_x<=0: gameOver = True elif ball_x>=790: dx*=-1 if ball_y>=590: gameOver = True elif ball_y<0: dy*=-1 #ball_x+=dx #ball_y+=dy gameDisplay.fill(black) gameDisplay.blit(slider, (cur_x_1, cur_y_1)) gameDisplay.blit(slider2, (cur_x_2, cur_y_2)) for brick in brickList: #If the ball collides with the brick, then remove the brick from brickList. a,b = detectCollisions(ball_x, ball_y, 10,10,brick.x, brick.y, brick.width, brick.height) if a == True and b == 3: brickList.remove(brick) dy *= -1 dx *= 1 count+=1 #pygame.mixer.music.load('Sounds/Brick.mp3') #pygame.mixer.music.play(1) #ball_y+=dy elif a == True and b == 4: brickList.remove(brick) dx *= -1 dy *= 1 count+=1 # pygame.mixer.music.load('Sounds/Brick.mp3') #pygame.mixer.music.play(1) #ball_x+=dx ball_x+=dx ball_y+=dy #Update the x and y coordinates of the sprite. spriteball.x=ball_x spriteball.y=ball_y spriteball.update(gameDisplay) if len(brickList)==0: levelcomplete(count) #Update the bricks and display the score accordingly. for brick in brickList: brick.render(gameDisplay) score(count) pygame.display.update() fps.tick(30) pygame.quit() quit()
missileno = 1 score = 0 lives = 3 soundmute = 0 #for count in range(5): #ourmissiles.append(Sprite(0,480, 'data/ac1missile.bmp',"ourmiss")) for count in range(5): enemies.append(Sprite(50 * x + 50, 50, 'data/baddie.bmp')) x += 1 ac1 = Aircraft(200, 200, 'data/aircraft.bmp', "ZH-837") enemymissile = Sprite(0, 480, 'data/baddiemissile.bmp') alien = Sprite(640,480,'data/alien.bmp') clock = pygame.time.Clock() #cloud = AnimatedSprite(500,500,'storm.bmp', 15) scorefont = font.Font(None, 30) livesfont = font.Font(None, 30) zapsound = load_sound('ZAP3.WAV') explodesound = load_sound('BOOM1.WAV') warpsound = load_sound('WARP.WAV') quit = 0
class GameMenu(object): """Menu de escolha de personagens""" def __init__(self,jogadores = ["","",[pygame.K_w,pygame.K_s,pygame.K_a,pygame.K_d,pygame.K_y,pygame.K_u,pygame.K_i],[pygame.K_UP,pygame.K_DOWN,pygame.K_LEFT,pygame.K_RIGHT,pygame.K_KP7,pygame.K_KP8,pygame.K_KP9]]): self.inicializa(jogadores) def inicializa(self,jogadores): """Inicializa elementos do menu""" self.width = pygame.display.get_surface().get_width() self.height = pygame.display.get_surface().get_height() pygame.mixer.Sound(os.path.join('.','Sons',"entradamenu.wav")).play() pygame.mixer.music.load(os.path.join('.','Musicas','menu.mp3')) pygame.mixer.music.set_volume(0.3) pygame.mixer.music.play(-1) self.font = pygame.font.Font(os.path.join('.','Imagens',"fonte.ttf"), int(self.height*0.08)) retratos = [] linha = [] pos = [self.width*0.2375,self.height*0.45] self.postitulo = [self.width*0.32,self.height*0.34] self.cor = 120 self.incrcor = 3 self.configcontrole = 0 #define posicoes dos retratos na tela for i in [string for string in os.listdir(os.path.join('.','Personagens')) if not string.startswith(".")]: x = pos[0] y = pos[1] linha.append(Retrato(i,(x,y))) pos[0] = pos[0] + 120 if (pos[0]+90) >= self.width: pos[1] = pos[1] + 160 pos[0] = self.width*0.2375 retratos.append(linha[:]) linha = [] #se o numero de personagens ultrapassa o limite de tamanho da tela para de ler if (pos[1] + 120) >= self.height: break if len(linha) > 0: retratos.append(linha[:]) self.retratos = retratos self.retratos[0][0].seleciona(1) self.retratos[0][0].seleciona(2) self.selecionadop1 = [0,0] self.selecionadop2 = [0,0] self.numcolunas = int((self.width-50)/120) self.fundo = Sprite(os.path.join('.','Imagens','menu.png'),(0,0),0,(self.width,self.height)) self.botoesp1 = jogadores[2] self.botoesp2 = jogadores[3] #eventos de input def input(self,eventos): """ Trata eventos de input """ for event in eventos: #Botao de fechar if event.type == QUIT: return True #Eventos de teclado elif event.type == KEYDOWN: if (event.key == pygame.K_ESCAPE): return True elif (event.key == pygame.K_RETURN): pygame.display.toggle_fullscreen() #Controles do P1 elif (event.key == self.botoesp1[3]): if not self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].escolhidop1: self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].deseleciona(1) self.selecionadop1[0] = (self.selecionadop1[0] + 1) % len(self.retratos[self.selecionadop1[1]]) self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].seleciona(1) elif (event.key == self.botoesp1[2]): if not self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].escolhidop1: self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].deseleciona(1) self.selecionadop1[0] = (self.selecionadop1[0] - 1) % len(self.retratos[self.selecionadop1[1]]) self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].seleciona(1) elif (event.key == self.botoesp1[1]): if not self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].escolhidop1: self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].deseleciona(1) self.selecionadop1[1] = (self.selecionadop1[1] + 1) % len(self.retratos) if len(self.retratos[self.selecionadop1[1]]) <= self.selecionadop1[0]: self.selecionadop1[0] = len(self.retratos[self.selecionadop1[1]]) - 1 self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].seleciona(1) elif (event.key == self.botoesp1[0]): if not self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].escolhidop1: self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].deseleciona(1) self.selecionadop1[1] = (self.selecionadop1[1] - 1) % len(self.retratos) if len(self.retratos[self.selecionadop1[1]]) <= self.selecionadop1[0]: self.selecionadop1[0] = len(self.retratos[self.selecionadop1[1]]) - 1 self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].seleciona(1) elif (event.key == self.botoesp1[4]): if not self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].escolhidop1: self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].escolhe(1) elif (event.key == self.botoesp1[5]): self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].desescolhe(1) #Controles do P2 elif (event.key == self.botoesp2[3]): if not self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].escolhidop2: self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].deseleciona(2) self.selecionadop2[0] = (self.selecionadop2[0] + 1) % len(self.retratos[self.selecionadop2[1]]) self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].seleciona(2) elif (event.key == self.botoesp2[2]): if not self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].escolhidop2: self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].deseleciona(2) self.selecionadop2[0] = (self.selecionadop2[0] - 1) % len(self.retratos[self.selecionadop2[1]]) self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].seleciona(2) elif (event.key == self.botoesp2[1]): if not self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].escolhidop2: self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].deseleciona(2) self.selecionadop2[1] = (self.selecionadop2[1] + 1) % len(self.retratos) if len(self.retratos[self.selecionadop2[1]]) <= self.selecionadop2[0]: self.selecionadop2[0] = len(self.retratos[self.selecionadop2[1]]) - 1 self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].seleciona(2) elif (event.key == self.botoesp2[0]): if not self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].escolhidop2: self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].deseleciona(2) self.selecionadop2[1] = (self.selecionadop2[1] - 1) % len(self.retratos) if len(self.retratos[self.selecionadop2[1]]) <= self.selecionadop2[0]: self.selecionadop2[0] = len(self.retratos[self.selecionadop2[1]]) - 1 self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].seleciona(2) elif (event.key == self.botoesp2[4]): if not self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].escolhidop2: self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].escolhe(2) elif (event.key == self.botoesp2[5]): self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].desescolhe(2) elif (event.key == pygame.K_F1) and (self.configcontrole == 0): self.configcontrole=1 self.botoesp1 = [] elif (event.key == pygame.K_F2) and (self.configcontrole == 0): self.configcontrole=2 self.botoesp2 = [] return False def update(self,dtempo,eventos): """Atualiza elementos do menu""" self.cor = self.cor + self.incrcor if self.cor >= 255: self.incrcor = -3 self.cor = 255 if self.cor <= 100: self.incrcor = 3 #caso um jogador esteja configurando os controles if self.configcontrole == 1: for event in eventos: if (event.type == KEYDOWN): self.botoesp1.append(event.key) if len(self.botoesp1) >= 7: self.botoesp1 = self.botoesp1[:7] self.configcontrole = 0 return False elif self.configcontrole == 2: for event in eventos: if (event.type == KEYDOWN): self.botoesp2.append(event.key) if len(self.botoesp2) >= 7: self.botoesp2 = self.botoesp2[:7] self.configcontrole = 0 return False else: self.fundo.update(dtempo) for i in self.retratos: for n in i: n.update(dtempo) #Se os 2 jogadores ja escolheram if self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].escolhidop1 and self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].escolhidop2: return [self.retratos[self.selecionadop1[1]][self.selecionadop1[0]].nome,self.retratos[self.selecionadop2[1]][self.selecionadop2[0]].nome,self.botoesp1,self.botoesp2] else: return self.input(eventos) def render(self,screen): """Renderiza os elementos da tela atual""" self.fundo.render(screen,(0,0)) screen.blit(self.font.render("Faça Sua Matrícula", True, (self.cor,0,0)),(self.postitulo[0],self.postitulo[1])) for i in self.retratos: for n in i: n.render(screen) if self.configcontrole: superficieescura = pygame.Surface((self.width, self.height), pygame.SRCALPHA) superficieescura.fill((0,0,0,210)) screen.blit(superficieescura,(0,0)) screen.blit(self.font.render("Configurando Controles:", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Configurando Controles:")[0]/2),self.height*0.1)) screen.blit(self.font.render("Pressione:", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Pressione:")[0]/2),self.height*0.4)) if self.configcontrole == 1: screen.blit(self.font.render("Jogador 1", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Jogador 1")[0]/2),self.height*0.2)) listabotoes = self.botoesp1 elif self.configcontrole == 2: screen.blit(self.font.render("Jogador 2", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Jogador 2")[0]/2),self.height*0.2)) listabotoes = self.botoesp2 if len(listabotoes) == 0: screen.blit(self.font.render("Cima", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Cima")[0]/2),self.height*0.5)) elif len(listabotoes) == 1: screen.blit(self.font.render("Baixo", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Baixo")[0]/2),self.height*0.5)) elif len(listabotoes) == 2: screen.blit(self.font.render("Esquerda", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Esquerda")[0]/2),self.height*0.5)) elif len(listabotoes) == 3: screen.blit(self.font.render("Direita", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Direita")[0]/2),self.height*0.5)) elif len(listabotoes) == 4: screen.blit(self.font.render("Soco", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Soco")[0]/2),self.height*0.5)) elif len(listabotoes) == 5: screen.blit(self.font.render("Chute", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Chute")[0]/2),self.height*0.5)) elif len(listabotoes) == 6: screen.blit(self.font.render("Especial", True, (self.cor,0,0)),((self.width/2)-(self.font.size("Especial")[0]/2),self.height*0.5)) def unload(self,): """Descarrega tela""" pygame.mixer.music.stop() pygame.time.delay(1500) pygame.mixer.stop() return True
def drawSidebarShip(self, ship): sidebarX = UserInterface.windowSize[0] - 240 / 2 Sprite.draw("ship-display", position=(sidebarX, self.shipY), hud=True) if ship.inWorld and not ship.destroyed: color = (0, 0, 0, 255) exponentialSize = 1.0 - (1.0 / (ship.maxDeflectorPower - 1)) deflectorWidth = 12 + (exponentialSize * (50 - 12)) power = scalarBound(0, ship.availableDeflectorPower / ship.maxDeflectorPower, 1.0) delta = int(power * deflectorWidth) statusAlpha, status = ship.status Sprite.draw( "ship-deflector", position=(UserInterface.windowSize[0] - 10 + 25 - delta, self.shipY), hud=True ) if not ship.hasTakenDamage: Sprite.draw("ship-ok", position=(UserInterface.windowSize[0] - 5, self.shipY), hud=True) else: Sprite.draw("ship-damage", position=(UserInterface.windowSize[0] - 5, self.shipY), hud=True) statusColor = (0, 0, 0, int(scalarBound(0.2, statusAlpha, 1.0) * 255)) Sprite.drawText(ship.name, position=(sidebarX - 110, self.shipY), bold=True, color=color) Sprite.drawText(status.lower(), position=(sidebarX - 20, self.shipY), bold=False, color=statusColor)