久久亚洲精品成人_国产精品欧美综合亚洲_亚洲va天堂va欧美ⅴa在线_91色视频在线观看_久久影院亚洲_一级黄色片播放_日韩av在线一区_精品一区二区在线看_老头吃奶性行交视频_日韩免费高清视频_天天操天天爽天天干_日本欧美在线视频

首頁 > 編程 > Python > 正文

pygame實現(xiàn)雷電游戲雛形開發(fā)

2020-02-15 23:44:37
字體:
供稿:網(wǎng)友

本文實例為大家分享了pygame實現(xiàn)雷電游戲開發(fā)代碼,供大家參考,具體內(nèi)容如下

源代碼:

stars.py

#-*- coding=utf-8 -*-#!/usr/bin/python import pygamefrom pygame.locals import *from random import randintimport math class Star(object):  def __init__(self, x, y, speed, color=(255,255,255)):     self.x = x    self.y = y    self.speed = speed    self.color = color class Stars(object):  '''    用于繪制星星背景  '''  def __init__(self, num = 0, SCREEN_SIZE=(800,600), color=(255,255,255)):    self.stars = []    self.MIN_SPEED = 10    self.MAX_SPEED = 300    self.SCREEN_SIZE = SCREEN_SIZE    if num > 0:      self.create_star(num, color)   def set_min_speed(self,speed):    self.MIN_SPEED = speed  def set_max_speed(self,speed):    self.MAX_SPEED = speed   def create_star(self,num = 1, color = (255,255,255)):    '''創(chuàng)建一個或多個星星,顏色可選'''    for i in xrange(0,num):      x = float(randint(0, self.SCREEN_SIZE[0]))      y = float(randint(0, self.SCREEN_SIZE[1]))      speed = float(randint(self.MIN_SPEED, self.MAX_SPEED))      self.stars.append( Star(x, y, speed, color) )   def move(self,time_passed_seconds):    '''移動星星并過濾'''    for star in self.stars:      star.y = star.y + time_passed_seconds * star.speed    #過濾跑出畫面的星星    self.stars = filter(lambda one: one.y<=self.SCREEN_SIZE[1], self.stars)   def draw(self, surface):    '''將星星畫到指定圖像對象'''    for star in self.stars:      #pygame.draw.aaline(surface, star.color,/      #    (star.x, star.y), (star.x+1., star.y))      surface.set_at((int(star.x),int(star.y)),star.color)  def test():   pygame.init()  screen = pygame.display.set_mode((800, 600)) #, FULLSCREEN)   stars = Stars()  #stars.set_max_speed(1000)  #stars.set_min_speed(300)   # 在第一幀,畫上一些星星  stars.create_star(200)     clock = pygame.time.Clock()   white = (255, 255, 255)     while True:     for event in pygame.event.get():      if event.type == QUIT:        return      if event.type == KEYDOWN:        return     time_passed = clock.tick(30)    time_passed_seconds = time_passed / 1000.     #update_background(stars, screen, time_passed_seconds)    # 增加一顆新的星星    stars.create_star(1)    stars.move(time_passed_seconds)     screen.fill((0, 0, 0))     # 繪制所有的星    stars.draw(screen)     pygame.display.update() if __name__ == "__main__":  test()

game.py

#-*- coding=utf-8 -*-#!/usr/bin/python import pygamefrom pygame.locals import *from random import randint#from gameobjects import vector2import mathimport time SCREEN_RECT = pygame.Rect(0,0,800,600) class Player(pygame.sprite.Sprite):  '''玩家類'''  speed = 10  images = []  def __init__(self):    pygame.sprite.Sprite.__init__(self, self.containers)    self.image = Player.images[0]    self.rect = self.image.get_rect(midbottom=SCREEN_RECT.midbottom)    self.health= 4    #self.time = 0    #self.reloading = False   #def update(self, time_passed_seconds=0.0): if not self.reloading: super(Player,self).update(time_passed_seconds) else: self.time += time_passed_seconds if self.time > 1.5: print self.time self.time = 0.0 self.reloading = False self.groups()[0].remove(self)   def move(self, directions):    '''移動,direction == 'up' or 'down' or 'left' or 'right' '''    for direction in directions:      if direction == 'up':        self.rect.move_ip(0, -1 * Player.speed)      elif direction == 'down':        self.rect.move_ip(0, 1 * Player.speed)      elif direction == 'left':        self.rect.move_ip(-1 * Player.speed, 0)      elif direction == 'right':        self.rect.move_ip(1 * Player.speed, 0)      else:        print 'argument error'        return None    self.rect.clamp_ip(SCREEN_RECT)   def shoted_and_live(self, harm):    '''被攻擊處理,依然存活返回True,否則返回False'''    self.health -= harm    if self.health <= 0:      return False    else:      return True   def attack_pos(self):    return self.rect.x + self.rect.width / 2, self.rect.y class Shot(pygame.sprite.Sprite):  '''通用子彈類'''  speed_tab = [ 13, 13, 26, 30 ]  #子彈攻擊力表  harm_tab = [ 1, 2 , 3, 12]  images  = []  #子彈大小表  shot_size = []  def __init__(self, pos, angle, id=1 ):    '''pos為射出位置      angle參數(shù)為子彈射出的方向角度,以12點鐘方向為0度,逆時針增大'''    pygame.sprite.Sprite.__init__(self, self.containers)    self.id  = id    self.angle = angle    self.speed = Shot.speed_tab[id-1]    self.harm = Shot.harm_tab[id-1]    self.image = pygame.transform.scale(Shot.images[id-1], Shot.shot_size[id-1])    self.image = pygame.transform.rotate(self.image, angle)    self.rect = self.image.get_rect(midbottom=pos)   def update(self,time_passed_seconds=0.0):    radian = self.angle / 180.0 * math.pi    self.rect.move_ip(math.sin(radian) * -self.speed,/        -self.speed * math.cos(radian) )    if self.rect.x+self.rect.width < 0 or/        self.rect.x > SCREEN_RECT.width or/        self.rect.y+self.rect.height < 0 or/        self.rect.y > SCREEN_RECT.height:      self.kill() class AlienShot(Shot):  '''    敵方子彈類    為了對象分組專為敵人的子彈使用一個新類,并定制子彈射速  '''  def __init__(self, pos, angle, id=1, speed=20 ):    Shot.__init__(self, pos, angle, id)    self.speed = speed def SectorShot(pos, shot_id):  '''扇形子彈的封裝'''  Shot(pos, 0, shot_id)  Shot(pos, 15, shot_id)  Shot(pos, 30, shot_id)  Shot(pos, 45, shot_id)  Shot(pos, 315,shot_id)  Shot(pos, 330,shot_id)  Shot(pos, 345,shot_id)  def CommonShot(pos, shot_id):  '''常規(guī)子彈'''  Shot(pos, 0, shot_id) class Alien(pygame.sprite.Sprite):  '''通用敵人類'''  #默認(rèn)速度表,速度為像素/秒  speed_tab = [ 400, 200, 200 ]  images= []  #用于射擊間隔  times = [0.15, 0.3, 0.4]    def __init__(self, id=1, health=5):    pygame.sprite.Sprite.__init__(self, self.containers)    self.id   = id    self.speed = Alien.speed_tab[id-1]    self.health = health    self.image = Alien.images[id-1]    self.rect  = self.image.get_rect()    self.rect.topleft = (randint(0, SCREEN_RECT.width-self.rect.width),0)     self.move_tab = [ self.move_line, self.move_circle, self.move_curve ]    #用于射擊的時間計算    self.time  = 0.0   def update(self, time_passed_seconds=0.0):    self.move_tab[self.id-1](time_passed_seconds)    if self.rect.x < 0 or self.rect.x > SCREEN_RECT.width or self.rect.y < 0 or self.rect.y > SCREEN_RECT.height:      self.kill()    self.time += time_passed_seconds    if self.time > Alien.times[self.id-1]:      self.time = 0.0      if self.id == 1:        AlienShot(self.attack_pos(), 180, 1, 30)      elif self.id == 2:        AlienShot(self.attack_pos(), 120, 1, 10)        AlienShot(self.attack_pos(), 150, 1, 10)        AlienShot(self.attack_pos(), 180, 1, 10)        AlienShot(self.attack_pos(), 210, 1, 10)        AlienShot(self.attack_pos(), 240, 1, 10)      elif self.id == 3:        AlienShot(self.attack_pos(), 180, 2, 10)    def shoted_and_live(self, harm):    '''被攻擊處理,依然存活返回True,否則返回False'''    self.health -= harm    if self.health <= 0:      return False    else:      return True   def move_line(self, time_passed_seconds):    self.rect.move_ip(0, self.speed * time_passed_seconds)   def move_circle(self, time_passed_seconds):    if not hasattr(self, 'angle'):      self.angle = 180    else:      self.angle = self.angle+time_passed_seconds*360    if not hasattr(self, 'radius'):      self.radius = 60    if not hasattr(self, 'center'):      x = self.rect.x+self.radius if self.rect.x < self.radius else self.rect.x-self.radius      self.center = [ x, 0+self.radius]    self.center[1] += 2    new_pos = self.__circle_next( self.center, self.radius, self.angle)     #self.rect.move_ip(new_pos[0], new_pos[1])    self.rect.x, self.rect.y = new_pos[0], new_pos[1]   def __circle_next(self, center, radius, angle):    x = math.sin(angle/180.0*math.pi) * radius + center[0]    y = math.cos(angle/180.0*math.pi) * radius + center[1]    return x, y   def move_curve(self, time_passed_seconds):    if not hasattr(self, 'ray'):      self.ray = self.rect.x    if not hasattr(self, 'angle'):      self.angle = 0    else:      self.angle = self.angle + time_passed_seconds * 360    if not hasattr(self, 'curve_width'):      self.curve_width = 50    x = math.sin(self.angle/180*math.pi) * self.curve_width + self.ray    y = self.rect.y + self.speed * time_passed_seconds    self.rect.x, self.rect.y = x, y   def attack_pos(self):    return self.rect.x + self.rect.width / 2, self.rect.y + self.rect.height  class Explosion(pygame.sprite.Sprite):  '''爆炸類'''  #用于存儲爆炸圖像每幀的坐標(biāo)  areas = [/(0,0,104,135), (104,0,104,135), (208,0,104,135),(312,0,104,135),(416,0,94,135),/(0,135,102,112),(102,135,102,112),(204,135,102,112),(306,135,102,112),(408,135,102,112),/(0,247,108,144),(108,247,100,144),(208,247,102,144),(310,247,100,144),(412,247,98,144),/(0,400,95,100) ]  images = []    def __init__(self, pos, id=1, areas=None):    pygame.sprite.Sprite.__init__(self, self.containers)    self.pos = pos    self.fps = 0    self.image_data = Explosion.images[id-1]    if areas is not None:      self.areas = areas     self.update()    def update(self, time_passed_seconds=0.0):    self.rect = pygame.Rect(self.areas[self.fps])    self.image = self.image_data.subsurface(Rect(self.areas[self.fps]))    self.rect.topleft = self.pos    self.fps += 1    if self.fps >= len(self.areas):      self.kill() class Score(pygame.sprite.Sprite):   score = 0  health= 0  life = 0  def __init__(self, font_type = "文泉驛點陣正黑"):    pygame.sprite.Sprite.__init__(self)    self.font = pygame.font.SysFont(font_type, 20)    self.color= (255,255,255)    self.msg = u"得分:%d/n生命:%d"    self.update()    self.rect = self.image.get_rect()    self.rect.topleft = (10,10)   def update(self, time_passed_seconds=0.0):    self.msg = u"生命:%d  得分:%d"% (Score.life, Score.score)    self.image = self.font.render(self.msg, True, self.color)            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
在线观看免费视频a| 国产午夜精品久久久| 69亚洲精品久久久蜜桃小说| 日韩欧美亚洲另类| 亚洲精品在线免费看| 热99精品里视频精品| 亚洲精品白虎| 国产精品高潮呻吟久久av无限| 成人av在线一区二区三区| 中文字幕一区二区三区四区欧美| 黄色免费看视频| 日日摸日日碰夜夜爽无码| 国产一区二区不卡视频| 91成人在线播放| 日韩精品在线免费播放| 91福利国产成人精品照片| 欧美高清在线精品一区| 激情六月婷婷久久| 91免费视频播放| 欧洲猛交xxxx乱大交3| 一级性生活视频| 国产富婆一区二区三区| 国产va免费精品高清在线| www.精品av.com| 欧美刺激午夜性久久久久久久| 亚洲综合网站在线观看| 久久精品亚洲麻豆av一区二区| 免费人成在线不卡| 手机看片福利永久| 国产强伦人妻毛片| 久久黄色精品视频| 中文字幕乱码在线| 先锋资源在线视频| 欧美成人乱码一二三四区免费| 9色porny| 成人网站免费观看入口| 成人午夜电影免费在线观看| 国产成人精品在线观看| 韩国三级电影久久久久久| 久久天天躁日日躁| 日韩专区在线观看| 国产免费成人在线| 日韩精品久久久| 牛人盗摄一区二区三区视频| 国产欧美综合精品一区二区| 欧美中文字幕在线视频| 美女视频黄免费的亚洲男人天堂| 国产婷婷成人久久av免费高清| 日韩欧美一二三四区| 6080午夜不卡| 欧美性jizz18性欧美| 色综合天天做天天爱| 午夜欧美视频在线观看| 粉嫩老牛aⅴ一区二区三区| 午夜成人免费电影| 欧美日韩性视频在线| 福利一区视频在线观看| 9l国产精品久久久久麻豆| 欧美aaaaa喷水| 欧洲精品视频在线观看| 欧洲国内综合视频| 日韩一卡二卡三卡国产欧美| 精品嫩草影院久久| 小泽玛利亚av在线| 午夜精品久久久久久99热| 日韩精品久久久久| 久久精品国产亚洲7777| 午夜精品美女自拍福到在线| 一区二区三欧美| 欧美夫妻性生活xx| 91精品在线观| 欧美精品亚洲| 午夜免费福利小电影| 国产无色aaa| 国产精品无码毛片| 全程偷拍露脸中年夫妇| 欧美精品一二三四区| 亚洲免费三区一区二区| 亚洲精品国产一区二区精华液 | 欧美亚洲国产一区二区三区| 日韩欧美综合在线| 欧美日韩国产成人高清视频| 91九色在线视频| 亚洲高清不卡一区| mm1313亚洲国产精品无码试看| 北条麻妃在线观看| 亚洲激情 欧美| 日韩少妇高潮抽搐| 蜜臀久久久99精品久久久久久| 久久亚洲精品小早川怜子| 欧美日韩亚洲一区二区| 亚洲欧美中文日韩在线| 欧美制服第一页| 人禽交欧美网站免费| 国产91色在线观看| 欧美美女性生活视频| 国产精品黄色大片| 日本三级亚洲精品| 一区二区三区欧美日| 日韩精品一区二区三区蜜臀| 久久久日本电影| 国产免费成人av| 天堂一区二区三区 | 国产精品久久久久久久久久久久午夜片| 手机成人在线| 成人免费看片载| 波多野结衣视频网址| 国产一区在线观看视频| 性久久久久久久| 自拍亚洲一区欧美另类| 国产精品国产精品国产专区蜜臀ah | 日本午夜精品理论片a级appf发布| 91久久精品一区二区别| 亚洲自偷自拍熟女另类| 欧美性生给视频| 视频一区二区三区中文字幕| 136国产福利精品导航| 日韩激情av在线播放| 91色视频在线观看| 苍井空浴缸大战猛男120分钟| 熟女少妇a性色生活片毛片| 国产情侣呻吟对白高潮| 91日韩一区二区三区| www在线观看免费视频| 久久久www成人免费精品张筱雨| 91丨porny丨蝌蚪视频| 欧美美女bb生活片| 青青久久av北条麻妃海外网| 日韩 欧美 自拍| 一起草在线视频| 免费国产精品视频| 一区二区三区久久| 国内精品模特av私拍在线观看| 一级黄色免费在线观看| 无码黑人精品一区二区| 男人天堂一区二区| 欧美日韩亚洲成人| 国产成人av在线| 性刺激的欧美三级视频| 日日噜噜噜噜人人爽亚洲精品| 成人午夜电影久久影院| 亚洲精品一区av在线播放| 国产欧美精品一区二区| 五月婷婷六月合| 国产情侣av在线| 亚洲成人自拍偷拍| 国产精品 欧美在线| 免费看毛片的网址| 久久艹免费视频| 亚洲女同女同女同女同女同69| 欧美日韩ab片| 熟妇熟女乱妇乱女网站| 国产在线观看99| 亚洲欧洲国产日本综合| 国模gogo一区二区大胆私拍| 午夜宅男在线视频| 日韩不卡高清视频| 亚洲成av人片| 亚洲一区二区三区四区在线播放 | 手机在线看片日韩| 久久精品国内一区二区三区| 日韩写真欧美这视频| 青青草成人激情在线| 日产精品久久久久久久| 亚洲人吸女人奶水| 国产精品色婷婷视频| 成人免费网站黄| 99久久久久久| 高清欧美性猛交xxxx黑人猛交| 黄色三级视频在线| 美女脱光内衣内裤视频久久影院| 日韩成人黄色av| 亚洲 高清 成人 动漫| www日本视频| 欧美日韩国产综合一区二区 | 丝袜美腿亚洲一区| 亚洲国产精品电影| 91.com在线| 亚洲av成人无码久久精品老人| 精品成人佐山爱一区二区| 屁屁影院ccyy国产第一页| av免费在线观看不卡| 日韩免费一区二区| 男人靠女人免费视频网站| 日韩电影一二三区| 久久成人亚洲精品| 欧美久久久久久久久久久| 国产在线不卡一区| 欧美肥婆姓交大片| 韩国无码一区二区三区精品| 国产一区二区三区四区在线观看| 欧美精品在线观看91| 国产在线观看免费播放| 国产亚洲1区2区3区| 91久久精品国产91久久| 韩国av免费观看| 日韩一级二级三级| 欧美性猛交丰臀xxxxx网站| 91精品国产手机| av漫画在线观看| 精品一区二区综合| 色狠狠久久aa北条麻妃| 国产欧美va欧美不卡在线| 成人av在线资源| 日韩美女视频在线观看| 在线播放av网址| 国产午夜精品理论片a级大结局| 97超碰人人爽| 97公开免费视频| 国产精品丝袜在线| 91精品国产综合久久香蕉麻豆| www.成人av| 久久久久久久久久久影院| 欧美日韩国产不卡| 缅甸午夜性猛交xxxx| 国产在线视频精品一区| 91爱爱小视频k| 欧美日韩国产精品一区二区三区| 欧美日本一道本| 久久国产成人精品国产成人亚洲| 国产又黄又大久久| 91久久国产精品| 一级黄色免费片| 久久国产精品久久精品| 亚洲精品自拍视频在线观看| 黑人巨大精品欧美一区免费视频 | 久久免费视频在线观看| 波多野结衣不卡视频| 欧美福利视频导航| 亚洲精品在线视频播放| 亚洲综合一二三区| 亚洲图片都市激情| 在线观看毛片网站| 久久精品国产91精品亚洲| 久久嫩草捆绑紧缚| 日韩欧美国产电影| 国产精品扒开腿做爽爽爽a片唱戏| 亚洲精选视频在线| 农民人伦一区二区三区| 久久久九九九九| 亚洲欧美国产精品桃花| 国产电影精品久久禁18| 成人精品视频在线| 水野朝阳av一区二区三区| av日韩免费电影| 国产精品综合网| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 亚洲午夜激情| 国产精品色噜噜| 男人搞女人网站| 欧美亚洲禁片免费| 久久久久久亚洲中文字幕无码| 精品视频在线播放免| 日韩欧美一区二区一幕| 欧美综合一区第一页| 香蕉视频成人在线| 先锋影音日韩| 亚洲一区二区三区国产| 国产精品揄拍100视频| 国产亚洲精品美女| 一级黄色片视频| 国产精品一区免费观看| 91在线国内视频| 污污动漫在线观看| 日韩情涩欧美日韩视频| 国产亚洲欧美久久久久| 青青草精品毛片| 国产在线一区观看| 各处沟厕大尺度偷拍女厕嘘嘘| 日本道免费精品一区二区三区| 精品女人久久久| 91精品国产高清久久久久久| 免费av成人在线| www.日本在线视频| 欧美日韩国产欧美日美国产精品| 麻豆changesxxx国产| 国产精品女人久久久久久| 国产69精品久久久久777| 欧美 日韩 国产一区| 欧美成人伊人久久综合网| 日韩人妻精品中文字幕| 国产专区一区二区| 有坂深雪av一区二区精品| 337人体粉嫩噜噜噜| 孩xxxx性bbbb欧美| 国产乱人伦精品一区二区在线观看| 欧美aⅴ在线观看| 亚洲国产欧美一区二区丝袜黑人 | 亚洲欧美va天堂人熟伦| 日韩欧美成人一区二区| 午夜久久久久久久久久久| 亚洲777理论| 成人在线观看高清| 国产美女久久久| 91日韩精品一区| 波多野结衣先锋影音| 久久久久久久久综合| 高清不卡在线观看av| 亚洲最大天堂网| 日韩午夜在线视频| 国产一区二区三区久久久| 亚洲精品性视频| 日韩一区二区久久久| 国产成人精品影院| xfplay5566色资源网站| 日本精品在线视频| 国产精品麻豆视频| 好吊色视频在线观看| 国产精品一区二区a| 91成人在线免费观看| 国产精品高潮呻吟av| 可以看毛片的网址| 一区二区三区视频在线| 国产乱子伦视频一区二区三区| 99热这里只有精品2| 亚洲91精品在线观看| 国产日韩欧美精品电影三级在线| 3d动漫精品啪啪一区二区下载| 成人免费视频网| 午夜精品福利在线| 91av国产精品| av网站在线观看不卡| 欧美另类老女人| 中文字幕亚洲一区二区av在线| 日韩av在线播| av一区二区三区免费观看| 国产一区av在线| 久久理论电影网| 香蕉视频一区二区| 欧美黄网在线观看| 另类视频在线观看| 亚洲视频在线一区| 在线观看免费中文字幕| 美女一区二区三区视频| 欧美专区国产专区| 午夜激情久久久| 少妇人妻一区二区| 黄色录像a级片| 欧美国产视频在线观看| 亚洲精品国产福利| 91丨九色丨国产丨porny| 久久久久久久久久综合| h无码动漫在线观看| 久久久久久久久国产精品| 一区二区三区四区国产精品| 国产内射老熟女aaaa∵| 在线免费看v片| 3d动漫啪啪精品一区二区免费 | 91精品久久久久久久久久久久久久 | 亚洲精品720p| 91片黄在线观看| 在线天堂中文字幕| 激情综合网婷婷| 国产精品爽黄69天堂a| 欧美日本一区二区| 高清不卡一二三区| 国产婷婷色一区二区在线观看| 日本成年人网址| 成人激情免费在线| 亚洲精美色品网站| 国产精品丝袜黑色高跟| 国产视频一区二区三| 亚洲色偷偷色噜噜狠狠99网 | 国产精品国内视频| 欧美日韩五月天| jvid福利写真一区二区三区| 日韩欧美中文字幕一区二区| 好男人www社区| 国产精品一区二区三区观看| 日韩成人xxxx| 伊人夜夜躁av伊人久久| 视频二区在线观看| 777777国产7777777| 波多野结衣作品集| 成人区精品一区二区| 日韩有码在线电影| 日本久久一区二区三区| 懂色av一区二区在线播放| 无码人妻一区二区三区线| 黄页网站在线看| 欧美性视频在线播放| 国产欧美韩国高清| 中文字幕亚洲二区| 欧美精品99久久久**| 国产精品成人免费| 九色|91porny| 国产精品系列视频| 久久r这里只有精品| 日韩精品国产一区| 黄色激情在线视频| 3d精品h动漫啪啪一区二区| 欧美成人免费一级人片100| 678五月天丁香亚洲综合网| 亚洲人成7777| 国产不卡视频一区二区三区| 在线观看毛片av| 免费在线视频观看| 性久久久久久久久久久| 国产黄视频在线| 日韩影院一区| 欧美精品三级在线观看| 亚洲人成亚洲人成在线观看图片| 国产成人h网站| 国产精品一区二区三区久久久| 亚洲视频在线看| 欧美日韩不卡视频| 一区二区三区久久| 国产色综合久久| 国产精品影音先锋| 欧美在线精品一区二区三区|