日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【Pygame小游戏】《坦克大战》,那些童年的游戏你还记得几个呢?

發(fā)布時(shí)間:2025/3/21 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Pygame小游戏】《坦克大战》,那些童年的游戏你还记得几个呢? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

🚀 作者 :“程序員梨子”

🚀 **文章簡(jiǎn)介 **:本篇文章主要利用pygame模塊寫(xiě)的一款坦克大戰(zhàn)小游戲啦!

🚀 **文章源碼獲取 **: 為了感謝每一個(gè)關(guān)注我的小可愛(ài)💓每篇文章的項(xiàng)目源碼都是無(wú)償分

享滴💓👇👇👇👇

點(diǎn)這里藍(lán)色這行字體自取,需要什么源碼記得說(shuō)標(biāo)題名字哈!私信我也可!

🚀 歡迎小伙伴們 點(diǎn)贊👍、收藏?、留言💬

正文

《坦克大戰(zhàn)》是當(dāng)年火遍大江南北的FC游戲,小霸王時(shí)代的裝機(jī)必備。現(xiàn)在看來(lái)是覺(jué)得畫(huà)面有點(diǎn)

簡(jiǎn)陋,但在以前絕對(duì)是屬于玩不膩的游戲之一。今天小編有時(shí)間就帶大家一起來(lái)康康吧~👇

開(kāi)始準(zhǔn)備的圖片素材很多分類處理:以下是部分截圖。

???

(2)不同的音樂(lè)背景:當(dāng)熟悉的背景音樂(lè)響起,撲面而來(lái)的是整個(gè)童年啊!

???

(3)游戲規(guī)則:

游戲有單人和雙人兩種模式,己方大本營(yíng)被破或者己方坦克被殲滅則游戲失敗,成功通過(guò)所有關(guān)卡

則游戲勝利。另外,玩家可以通過(guò)射擊特定的坦克使地圖上隨機(jī)出現(xiàn)一個(gè)道具,若己方坦克撿到該

道具,則觸發(fā)一個(gè)事件,例如坦克能力的增強(qiáng)。

???

玩家操作方式如下:

玩家一:

wsad鍵:上下左右;

空格鍵:射擊。

玩家二:

↑↓←→鍵:上下左右;

小鍵盤(pán)0鍵:射擊。

# 玩家一, WSAD移動(dòng), 空格鍵射擊if tank_player1.num_lifes >= 0:if key_pressed[pygame.K_w]:player_tanks_group.remove(tank_player1)tank_player1.move('up', self.scene_elems, player_tanks_group, enemy_tanks_group, home)player_tanks_group.add(tank_player1)elif key_pressed[pygame.K_s]:player_tanks_group.remove(tank_player1)tank_player1.move('down', self.scene_elems, player_tanks_group, enemy_tanks_group, home)player_tanks_group.add(tank_player1)elif key_pressed[pygame.K_a]:player_tanks_group.remove(tank_player1)tank_player1.move('left', self.scene_elems, player_tanks_group, enemy_tanks_group, home)player_tanks_group.add(tank_player1)elif key_pressed[pygame.K_d]:player_tanks_group.remove(tank_player1)tank_player1.move('right', self.scene_elems, player_tanks_group, enemy_tanks_group, home)player_tanks_group.add(tank_player1)elif key_pressed[pygame.K_SPACE]:bullet = tank_player1.shoot()if bullet:self.sounds['fire'].play() if tank_player1.tanklevel < 2 else self.sounds['Gunfire'].play()player_bullets_group.add(bullet)# 玩家二, ↑↓←→移動(dòng), 小鍵盤(pán)0鍵射擊if self.is_dual_mode and (tank_player2.num_lifes >= 0):if key_pressed[pygame.K_UP]:player_tanks_group.remove(tank_player2)tank_player2.move('up', self.scene_elems, player_tanks_group, enemy_tanks_group, home)player_tanks_group.add(tank_player2)elif key_pressed[pygame.K_DOWN]:player_tanks_group.remove(tank_player2)tank_player2.move('down', self.scene_elems, player_tanks_group, enemy_tanks_group, home)player_tanks_group.add(tank_player2)elif key_pressed[pygame.K_LEFT]:player_tanks_group.remove(tank_player2)tank_player2.move('left', self.scene_elems, player_tanks_group, enemy_tanks_group, home)player_tanks_group.add(tank_player2)elif key_pressed[pygame.K_RIGHT]:player_tanks_group.remove(tank_player2)tank_player2.move('right', self.scene_elems, player_tanks_group, enemy_tanks_group, home)player_tanks_group.add(tank_player2)elif key_pressed[pygame.K_KP0]:bullet = tank_player2.shoot()if bullet:player_bullets_group.add(bullet)self.sounds['fire'].play() if tank_player2.tanklevel < 2 else self.sounds['Gunfire'].play()

加載游戲素材中:

??????????

附:

?# 加載游戲素材sounds = {}for key, value in cfg.AUDIO_PATHS.items():sounds[key] = pygame.mixer.Sound(value)sounds[key].set_volume(1)?

(4)在坦克移動(dòng)中、打到對(duì)方等肯定有碰撞:

# 碰撞檢測(cè)# --子彈和磚墻pygame.sprite.groupcollide(player_bullets_group, self.scene_elems.get('brick_group'), True, True)pygame.sprite.groupcollide(enemy_bullets_group, self.scene_elems.get('brick_group'), True, True)# --子彈和鐵墻for bullet in player_bullets_group:if pygame.sprite.spritecollide(bullet, self.scene_elems.get('iron_group'), bullet.is_stronger, None):player_bullets_group.remove(bullet)pygame.sprite.groupcollide(enemy_bullets_group, self.scene_elems.get('iron_group'), True, False)# --子彈撞子彈pygame.sprite.groupcollide(player_bullets_group, enemy_bullets_group, True, True)# --我方子彈撞敵方坦克for tank in enemy_tanks_group:if pygame.sprite.spritecollide(tank, player_bullets_group, True, None):if tank.food:foods_group.add(tank.food)tank.food = Noneif tank.decreaseTankLevel():self.sounds['bang'].play()self.total_enemy_num -= 1# --敵方子彈撞我方坦克for tank in player_tanks_group:if pygame.sprite.spritecollide(tank, enemy_bullets_group, True, None):if tank.is_protected:self.sounds['blast'].play()else:if tank.decreaseTankLevel():self.sounds['bang'].play()if tank.num_lifes < 0:player_tanks_group.remove(tank)# --我方子彈撞我方大本營(yíng)if pygame.sprite.spritecollide(home, player_bullets_group, True, None):is_win = Falseis_running = Falsehome.setDead()# --敵方子彈撞我方大本營(yíng)if pygame.sprite.spritecollide(home, enemy_bullets_group, True, None):is_win = Falseis_running = Falsehome.setDead()

(5)坦克游戲中會(huì)隨機(jī)生成食物:

# --坦克吃到食物for player_tank in player_tanks_group:for food in foods_group:if pygame.sprite.collide_rect(player_tank, food):if food.name == 'boom':self.sounds['add'].play()for _ in enemy_tanks_group:self.sounds['bang'].play()self.total_enemy_num -= len(enemy_tanks_group)enemy_tanks_group = pygame.sprite.Group()elif food.name == 'clock':self.sounds['add'].play()for enemy_tank in enemy_tanks_group:enemy_tank.setStill()elif food.name == 'gun':self.sounds['add'].play()player_tank.improveTankLevel()elif food.name == 'iron':self.sounds['add'].play()self.__pretectHome()elif food.name == 'protect':self.sounds['add'].play()player_tank.setProtected()elif food.name == 'star':self.sounds['add'].play()player_tank.improveTankLevel()player_tank.improveTankLevel()elif food.name == 'tank':self.sounds['add'].play()player_tank.addLife()foods_group.remove(food)

游戲效果:

????????

??總結(jié)

?這游戲的話經(jīng)典哈,還是你門(mén)記憶中的坦克嗎?

說(shuō)實(shí)話代碼真挺多的,你感覺(jué)這款坦克大戰(zhàn)有還原多少呀??

注小編獲取更多精彩內(nèi)容!記得點(diǎn)擊傳送門(mén)哈👇

記得三連哦! 如需打包好的源碼+素材免費(fèi)分享滴!傳送門(mén)

總結(jié)

以上是生活随笔為你收集整理的【Pygame小游戏】《坦克大战》,那些童年的游戏你还记得几个呢?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。