libpng warning: iCCP: known incorrect sRGB profile


  1 import random
  2 import pygame
  3 SCREEN_RECT=pygame.Rect(0,0,480,700)
  4 FAME_PER_SEC=60
  5 # fame_per_sec
  6 CREATE_ENEMY_EVENT=pygame.USEREVENT
  7 HERO_FIRE_EVENT=pygame.USEREVENT+1
  8 
  9 class GameSprite(pygame.sprite.Sprite):
 10     def __init__(self,image_name,speed=1):
 11         super().__init__()
 12         self.image=pygame.image.load(image_name)
 13         self.rect=self.image.get_rect()
 14         self.speed=speed
 15 
 16     def update(self):
 17         self.rect.y+=self.speed
 18 
 19 class Backrgound(GameSprite):
 20     def __init__(self,is_alt=False):
 21         super().__init__("./images/background.png")
 22         if is_alt:
 23             self.rect.y=-self.rect.height
 24 
 25     def update(self):
 26         super().update()
 27         if self.rect.y>=SCREEN_RECT.height:
 28             self.rect.y=-self.rect.height
 29 
 30 class Enemy(GameSprite):
 31     def __init__(self):
 32         super().__init__("./images/enemy1.png")
 33         self.speed=random.randint(1,3)
 34         self.rect.bottom=0
 35         max_x=SCREEN_RECT.width-self.rect.width
 36         self.rect.x=random.randint(0,max_x)
 37 
 38     def update(self):
 39         super().update()
 40         if self.rect.y>=SCREEN_RECT.height:
 41             # print("飞出屏幕,需要从精灵组删除...")
 42             self.kill()
 43 
 44     def __del__(self):
 45         # print("敌机销毁 %s"%self.rect)
 46         pass
 47 
 48 class Hero(GameSprite):
 49     def __init__(self):
 50         super().__init__("./images/me1.png",0)
 51 
 52         self.rect.centerx=SCREEN_RECT.centerx
 53         self.rect.bottom=SCREEN_RECT.bottom-120
 54 
 55         self.bullets=pygame.sprite.Group()
 56     def update(self):
 57         self.rect.x+=self.speed
 58         if self.rect.x<0:
 59             self.rect.x=0
 60         elif self.rect.right>SCREEN_RECT.right:
 61             self.rect.right=SCREEN_RECT.right
 62     def fire(self):
 63         print("发射子弹...")
 64         for i in (0,1,2):
 65             bullet=Bullet()
 66             bullet.rect.bottom=self.rect.y -i*20
 67             bullet.rect.centerx=self.rect.centerx
 68             self.bullets.add(bullet)
 69 
 70 import pygame
 71 from plane_sprites import *
 72 
 73 class PlaneGame(object):
 74     def __init__(self):
 75         print("游戏初始化...")
 76         self.screen=pygame.display.set_mode(SCREEN_RECT.size)
 77         self.clcok=pygame.time.Clock()
 78         self.__create_sprites()
 79         pygame.time.set_timer(CREATE_ENEMY_EVENT,1000)
 80         pygame.time.set_timer(HERO_FIRE_EVENT,500)
 81 
 82     def __create_sprites(self):
 83         bg1=Backrgound()
 84         bg2=Backrgound(True)
 85         # bg2.rect.y=-bg2.rect.height
 86         self.back_ground=pygame.sprite.Group(bg1,bg2)
 87 
 88         self.enemy_group=pygame.sprite.Group()
 89 
 90         self.hero=Hero()
 91         self.hero_group=pygame.sprite.Group(self.hero)
 92 
 93     def start_game(self):
 94         print("游戏开始...")
 95         while True:
 96             self.clcok.tick(FAME_PER_SEC)
 97             self.__event_handler()
 98             self.__check_collide()
 99             self.__update_sprites()
100             pygame.display.update()
101 
102     def __event_handler(self):
103         for event in pygame.event.get():
104             if event.type==pygame.QUIT:
105                 PlaneGame.__game_over()
106             elif event.type==CREATE_ENEMY_EVENT:
107                 print("敌机出场...")
108                 enemy=Enemy()
109                 self.enemy_group.add(enemy)
110             elif event.type==HERO_FIRE_EVENT:
111                 self.hero.fire()
112             # elif event.type==pygame.KEYDOWN and pygame.K_RETURN:
113             #     print("向右移动...")
114         keys_pressend=pygame.key.get_pressed()
115         if keys_pressend[pygame.K_RIGHT]:
116             self.hero.speed=2
117         elif keys_pressend[pygame.K_LEFT]:
118             self.hero.speed=-2
119         else:
120             self.hero.speed=0
121 
122     def __check_collide(self):
123         pygame.sprite.groupcollide(self.hero.bullets,self.enemy_group,True,True)
124         enemies=pygame.sprite.spritecollide(self.hero,self.enemy_group,True)
125         if len(enemies)>0:
126             self.hero.kill()
127             PlaneGame.__game_over()
128 
129     def __update_sprites(self):
130         self.back_ground.update()
131         self.back_ground.draw(self.screen)
132 
133         self.enemy_group.update()
134         self.enemy_group.draw(self.screen)
135 
136         self.hero_group.update()
137         self.hero_group.draw(self.screen)
138 
139         self.hero.bullets.update()
140         self.hero.bullets.draw(self.screen)
141 
142     @staticmethod
143     def __game_over():
144         print("游戏结束")
145         pygame.quit()
146         exit()
147 
148 if __name__ == '__main__':
149     game=PlaneGame()
150     game.start_game()

 

 

 

posted @ 2021-11-18 10:39  jdybs07  阅读(170)  评论(0)    收藏  举报