<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
通過辣條最近觀察,大家好像對划水摸魚是情有獨鍾啊。於是乎我重操舊業又寫上了這麼一個簡單版的星空大戰小遊戲。
當然了辣條的初衷絕對不是讓你們划水摸魚啊,是真想你們能從中學習那麼一點點東西的,總而言之希望大家在Python這條路上少踩坑吧,因為昨天還有人在跟學長說,以後增刪改查一樣拿高薪,我不信現在都墮落成這樣子了
就像問一下懂事理的兄弟姐妹們,你們覺得有可能嘛?
星空飛碟大戰.py
由於配音需要混音器,這裡用到了pygame的混音器,
from sprites import * import pygame.mixer
def star_move(): """動態星空背景函數""" for star in stars: star.move(0,-20) if star.ycor() < -height//2: x = random.randint(-width//2,width//2) y = random.randint(10+height//2,height*2) star.reborn(x,y,0,-20)
def spawn_enemy(): """不定時產生敵機函數""" if random.randint(1,10)==1 and len(enemys)<10: x = random.randint(-200,200) y = random.randint(100,300) enemy = Sprite(shape='res/ufo.png',visible=False,pos=(x,y),tag='enemy') enemy._rotatemode = 1 enemy.scale(0.5) enemy.setheading(random.randint(1,360)) enemy.show()
def enemymove(): """飛碟的移動""" for e in enemys: e.fd(3) # 設定一定的機率讓ufo朝向player if random.randint(10,100) == 10 and abs(e.xcor())<200 and abs(e.ycor()<250): e.heading(player) e.bounce_on_edge()
def bulletmove(): """子彈的移動""" for b in list(bullets): b.move(0,10) if b.collide_edge():b.remove()
def player_shoot(): """玩家射擊函數""" if player.alive == False : return if m1.down() and framecounter % 5 == 0 : b = Sprite(shape='circle',visible=False,tag='bullet') b.scale(0.5) b.color('yellow') b.goto(player.pos()) # 移到player座標 b.show() # 顯示子彈 shoot.play() # 播放射擊聲
# 播放背景音樂與生成聲效物件 pygame.mixer.init() pygame.mixer.music.load('audio/FrozenJam.ogg') pygame.mixer.music.play(-1,0) explosion = pygame.mixer.Sound('audio/expl3.wav') shoot = pygame.mixer.Sound('audio/pew.wav')
width,height = 480,640 screen = Screen() # 新建螢幕 screen.bgcolor('black') # 螢幕背景色為黑 screen.setup(width,height) screen.title("星空飛碟大戰by大海老師") screen.addshape('res/fighter.png') screen.addshape('res/ufo.png') frames = ['res/explosion0.png','res/explosion1.png'] [screen.addshape(frame) for frame in frames]
# 星星,用來做向下捲動背景,星星的移動也可以通過移動圖章實現 # 這樣可以有更多的星星。如果用克隆的話有數量限制,根據計算機設定不同而不同。 star = Sprite(shape='circle') star.color('white') star.scale(0.1) stars = [star] stars.extend([star.clone() for _ in range(20)]) for star in stars: x = random.randint(-width//2,width//2) y = random.randint(10+height//2,height*2) star.goto(x,y)
cry = Sprite(shape='cry.png',visible=False,pos=(0,100))
player = Sprite(shape='res/fighter.png',pos=(0,-200)) player.scale(0.65) player.alive = True # 表示player是活的 m1 = Mouse() # 滑鼠左鍵檢測範例 clock = Clock() # 實鍾物件,用來控制fps framecounter = 0 counter = 0 # 統計擊中的ufo數量 bullets = Group('bullet') # 子彈組 enemys = Group('enemy') # ufo敵人組
while counter<100: framecounter += 1 # 幀計數器 spawn_enemy() # 不定時產生敵機UFO player_shoot() # 單擊滑鼠左鍵,射擊子彈 enemymove() # 飛碟們的移動 bulletmove() # 子彈的移動 if player.alive: player.goto(mousepos()) else: cry.show() # 顯示哭臉,表示失敗 star_move() # 星空捲動背景
for e in list(enemys): # 對每架敵機進行碰撞檢測 if e.collide(player,scale=0.6): explode(e.position(),frames) e.remove() explode(player.pos(),frames) player.remove() player.alive = False explosion.play() # 爆炸聲 break # 敵機是否碰到任意一顆子彈 for b in list(bullets): if b.collide(e,scale=0.6): # 如果子彈碰到UFO explode(e.position(),frames) e.remove() b.remove() explosion.play() # 爆炸聲 counter +=1 # 進行統計 break screen.title('星空飛碟大戰,當前擊斃:' + str(counter) + " 架UFO") clock.tick(60)
[b.remove() for b in list(bullets)] # 闖關成功把子彈刪除 for e in list(enemys): # 每架飛碟都爆炸 explode(e.position(),frames) e.remove() clock.tick(10) t = Turtle(visible=False) t.color('yellow') t.write('成功闖關!',align='center',font=('黑體',32,'normal')) while True: player.goto(mousepos()) star_move() # 星空捲動背景 clock.tick(60)
看到這裡的都是妥妥的鐵粉無疑了,既然是鐵粉那就給你們一次親密接觸機會,底下是我的個人ming片找到我的可是有大把原始碼,學習路線啥的,多的我就不透露,看大家自己的積極性了啊~
其次呢再次重申辣條我真的不是想讓你們摸魚的,雖然說是個很簡單的東西,但是對於初學者,或者基礎不紮實的弟弟妹妹們而言估計也很難實現出來的,所以最後大家加油吧~
以上就是利用Python寫個簡易版星空大戰遊戲的詳細內容,更多關於Python星空大戰的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45