日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

机甲才是男人的浪漫 这款Python版免费战争机甲类游戏,“白拿党”还在等什么?(超帅气)

發(fā)布時(shí)間:2025/3/21 python 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机甲才是男人的浪漫 这款Python版免费战争机甲类游戏,“白拿党”还在等什么?(超帅气) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前文

大家好!我是梨子同學(xué)!

希望大家多多支持我!哈哈

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

很多csdn的功能還在研究中,還有小編的文筆不好勿怪,會(huì)慢慢進(jìn)步跟大家一起學(xué)習(xí)的

小編也一直在學(xué)習(xí)編程,如果代碼小程序出現(xiàn)錯(cuò)誤歡迎大家評(píng)論區(qū)留言哈!

最后——如果文章有幫助到你,記得“關(guān)注”、“點(diǎn)贊”、“評(píng)論”三連哦~

導(dǎo)語(yǔ)

大家早上好哈!

?最近一直再研究一款小游戲,畫面打斗場(chǎng)景特別精彩!

本文呢是開源的游戲項(xiàng)目哈——這游戲可是個(gè)大工程,小編按照自己的想法加工優(yōu)化一下給大家展

示效果滴!相信大家應(yīng)該是有喜歡的!需要的話記得文末找我拿源碼哈!

正文

一、小編有話說(shuō)

其實(shí)這款游戲是一款機(jī)甲對(duì)戰(zhàn)的模式——下面我說(shuō)的話不要捶我哈,狗頭保命.jpg

感覺這種打怪掉金幣、掉血包等等這些跟我之前看我朋友打的一款《地下城與勇士》很像!

2333,

感覺都是這種一直刷刷刷的闖關(guān)模式,直女表示:“看這類游戲都差不多一樣”,但是貌似市面上很

多這種類似刷boss闖關(guān)的,還可以自動(dòng)刷的游戲來(lái)著!BUT 我沒玩過(guò)但應(yīng)該是很多人的童年吧~

?二、游戲規(guī)則

2.1闖關(guān)模式

這款游戲只有一個(gè)關(guān)卡:但是一個(gè)關(guān)卡里面分為幾個(gè)小boss、打完即可通關(guān),顯示血量為0即可通關(guān)不成功。一只紅色的機(jī)甲作為玩家必須打敗出現(xiàn)的所有小機(jī)甲+小boss,每次敵方機(jī)甲死亡會(huì)掉落不同屬性的物品,比如:血包、裝備等等,靠近即可收取為自己可用。

2.2技能提示

機(jī)甲玩家角色:機(jī)甲技能列表—I—O—J—U-作為技能按鍵;機(jī)甲移動(dòng)列表—W—A—S—D—作為上下左右移動(dòng)按鍵。

三、游戲素材

這個(gè)游戲?qū)懥藥浊写a——游戲素材圖片——相應(yīng)的背景音樂等都特別的多——下面僅展示一小小部分給大家哈!

3.1像素畫風(fēng)——

?

3.2機(jī)甲模型——

3.3冒險(xiǎn)闖關(guān)

四、環(huán)境安裝

本文是寫的小游戲嘛!基于Pygame寫的。環(huán)境準(zhǔn)備:Python3、Pycharm。

pip install -i https://pypi.douban.com/simple/ pygame

五、由于項(xiàng)目代碼過(guò)多,這里只給出部分代碼。

5.1加載動(dòng)畫以及音效

font = pygame.font.SysFont(None,50,True)# 字體 True 打開抗鋸齒 load_music=pygame.mixer.Sound("music/11046.wav") start_music=pygame.mixer.Sound("music/戰(zhàn)斗背景音效.wav") back_music=pygame.mixer.Sound("music/BGM_1 (1)_02.wav") green_jn=pygame.mixer.Sound("music/敵人技能.wav") green_attack_music=pygame.mixer.Sound("music/怪叫.wav") player_hit_music=pygame.mixer.Sound("music/機(jī)甲受傷.wav") walk_music=pygame.mixer.Sound("music/機(jī)器走路.wav") jump_music=pygame.mixer.Sound("music/彈跳.wav") diren_die_music=pygame.mixer.Sound("music/坦克爆炸.wav") jn_music=pygame.mixer.Sound("music/激光聲游戲噴射_1_3.wav") attack_music=pygame.mixer.Sound("music/敵人普攻_01_1.wav") check_music=pygame.mixer.Sound("music/升級(jí)或者獲得獎(jiǎng)勵(lì).wav") feiti_music=pygame.mixer.Sound("music/機(jī)器故障.wav") game_over_music=pygame.mixer.Sound("music/我一定會(huì)回來(lái)的.wav") life_add_music=pygame.mixer.Sound("music/加血.wav")player_hit_music.set_volume(0.5) check_music.set_volume(0.2) green_attack_music.set_volume(0.1) back_music.set_volume(0) jn_music.set_volume(1) start_music.set_volume(0.5) load_music.set_volume(1)

5.2初始化地圖

map_img=pygame.image.load("map_img/left.jpg") start_back=pygame.image.load("load_img/start_back2.png") set_font = pygame.font.SysFont("KaiTi", 47)# load_music.play()screen=pygame.display.set_mode((WIDTH,HEIGHT),pygame.FULLSCREEN) # screen=pygame.display.set_mode((WIDTH,HEIGHT)) # screen.fill((16,16,16)) screen.blit(start_back,(0,0))pygame.display.set_caption("機(jī)甲對(duì)戰(zhàn)小游戲") pygame.display.set_icon(start_back) # load_image=() #開始動(dòng)畫列表 load_count=1 #開始動(dòng)畫加載 start_flag=False#是否開始 start_music.play(-1)#游戲開始音效 for pic_num in range(1,30):if pic_num<10:load_image+=(pygame.image.load("./load_img/jz00"+str(pic_num)+".png"),)elif pic_num>9:load_image+=(pygame.image.load("./load_img/jz0"+str(pic_num)+".png"),)class walk_sound():def __init__(self,src):self.sound=pygame.mixer.Sound(src)self.sound.set_volume(1)def music_play(self):self.sound.play()def music_stop(self):self.sound.stop()

5.3關(guān)卡動(dòng)畫

class check_fun(object):check_list = []for pic_num in range(1, 13):check_list+=(pygame.image.load("./right_check/箭頭" + str(pic_num) + ".png"),)def __init__(self):self.check_count=1def draw(self,screen):if self.check_count>=12:self.check_count=1if self.check_count:screen.blit(self.check_list[self.check_count],(1100,290))self.check_count+=1

5.4玩家角色

class Player(object):flc_list=() #機(jī)甲o(hù)技能列表lizi_list = () #粒子特效1 列表lizi2_list = () #粒子特效2 列表lizi3_list =() #粒子特效3 列表walk_right = () #機(jī)甲 向左走列表walk_left = () #機(jī)甲 向左走列表jn_list = () #機(jī)甲i技能列表jump_list = () #機(jī)甲跳躍技能列表hit_list = () #機(jī)甲受傷列表attack_list_one=() #近攻 第一段 列表attack_list_two = () #近攻 第二段列表attack_list_three = () #近攻 第三段列表life_list=() #機(jī)甲受傷 列表die_list=() #機(jī)甲 血量 列表all_tuple=()stand_list = ()HP_tuple=()cd_tuple=()level_tuple=()for pic_num in range(1,13):level_tuple+=(pygame.image.load("./Update/"+str(pic_num)+".png"),)for pic_num in range(1,17):all_tuple+=(pygame.image.load("./jn/BIG/1 ("+str(pic_num)+").png"),)for pic_num in range(1,12):cd_tuple+=(pygame.image.load("./cd/cd"+str(pic_num)+".png"),)for pic_num in range(1,17):HP_tuple+=(pygame.image.load("./HP/"+str(pic_num)+".png"),)for pic_num in range(1,65):die_list+=(pygame.image.load("./die/die ("+str(pic_num)+").png"),)for pic_num in range(1,33):flc_list+=(pygame.image.load("./jn/flc ("+str(pic_num)+").png"),)for pic_num in range(1,49):lizi_list+=(pygame.image.load("./fire/"+str(pic_num)+".png"),)for pic_num in range(1,34):lizi2_list+=(pygame.image.load("./huohua/"+str(pic_num)+".png"),)for pic_num in range(1,81):lizi3_list+=(pygame.image.load("./huohua2/"+str(pic_num)+".png"),)for pic_num in range(1,5):life_list+=(pygame.image.load("./hit/ss (1).png"),)life_list+=(pygame.image.load("./hit/ss (2).png"),)for pic_num in range(1,13):walk_right+=(pygame.image.load("./walk/walk ("+str(pic_num)+").png"),)for pic_num in range(12,0,-1):walk_left+=(pygame.image.load("./walk/walk ("+str(pic_num)+").png"),)for pic_num in range(1, 25):stand_list+=(pygame.image.load("./stand/stand (" + str(pic_num) + ").png"),)for pic_num in range(1,41):jn_list+=(pygame.image.load("./jn/jn ("+str(pic_num)+").png"),)for pic_num in range(1,39):jump_list+=(pygame.image.load("./jump/jump ("+str(pic_num)+").png"),)for pic_num in range(1,48):hit_list+=(pygame.image.load("./hit/jd ("+str(pic_num)+").png"),)for pic_num in range(1,14):attack_list_one+=(pygame.image.load("./attack/1attack ("+str(pic_num)+").png"),)for pic_num in range(1,7):attack_list_two+=(pygame.image.load("./attack/2attack ("+str(pic_num)+").png"),)for pic_num in range(1,12):attack_list_three+=(pygame.image.load("./attack/3attack ("+str(pic_num)+").png"),)def __init__(self,x,y,width,height):self.x=xself.y=yself.width=widthself.height=heightself.speed=1self.left=Falseself.right=Trueself.stand=Trueself.jump=Falseself.i=Falseself.hit=Falseself.attack=0self.stand_count=1#站立的圖片索引self.walk_count=1#步行的圖片索引self.jump_count=1#跳躍的圖片索引self.jn_count=1#技能i的圖片索引self.hit_count=1#受傷的圖片索引self.attack_Bool=Falseself.attack_one_count = 1#一段普攻的圖片索引self.attack_two_count = 1 # 二段普攻的圖片索引self.attack_three_count = 1 # 三段普攻的圖片索引self.life=100self.t=10self.hit_box = (self.x, self.y, self.width, self.height) # 碰撞框的位置 大小變量self.kill_enemy=0self.life_remove_bool=Falseself.life_count=0self.lizi_count=1self.lizi2_count = 1self.flc_count=0self.lizi3_count=1self.HP_count=0self.cd_count=0self.all_count=0self.cd=Falseself.levelAdd=Falseself.level=1self.flc=Falseself.die=Falseself.all=Falseself.die_count=0self.level_count=0self.HP_img=pygame.image.load("./HP/電池.png")self.skill_img = pygame.image.load("./HP/skill_num.png")self.player_img = pygame.image.load("./HP/head.png")self.win_bool=Falseself.lifeAdd=Falseself.all_lenth=50def draw(self,screen):if self.all_count>=16:self.all_count=0self.all=Falseself.all_lenth=50if player.all_count>14:U_Testing(enemylist)U_Testing(enemylist2)U_Testing(enemylist3)U_Testing(enemylist4)if self.cd_count>=11:self.cd_count=0self.cd=Falseif self.HP_count == 2:life_add_music.play()if self.HP_count>=16:life_add_music.stop()self.HP_count=0self.lifeAdd = Falseif self.level_count==2:life_add_music.play()if self.level_count>=12:life_add_music.stop()if self.level_count>=12:self.level_count=0self.levelAdd = Falseif self.lizi_count>=48:self.lizi_count=1if self.lizi2_count>=33:self.lizi2_count=1if self.lizi3_count>=80:self.lizi3_count=1if self.lizi2_count:screen.blit(self.lizi2_list[self.lizi2_count], (-100, 500))screen.blit(self.lizi2_list[self.lizi2_count], (200, 500))screen.blit(self.lizi2_list[self.lizi2_count], (500, 500))screen.blit(self.lizi2_list[self.lizi2_count], (800, 500))screen.blit(self.lizi2_list[self.lizi2_count], (1100, 500))self.lizi2_count += 1# if self.lizi3_count:# screen.blit(self.lizi3_list[self.lizi3_count], (-100, -120))# screen.blit(self.lizi3_list[self.lizi3_count], (200, -200))# screen.blit(self.lizi3_list[self.lizi3_count], (500, -120))# screen.blit(self.lizi3_list[self.lizi3_count], (800, -200))# screen.blit(self.lizi3_list[self.lizi3_count], (1100, -120))# self.lizi3_count += 1if self.lizi_count:screen.blit(self.lizi_list[self.lizi_count], (-100, 600))screen.blit(self.lizi_list[self.lizi_count], (200, 550))screen.blit(self.lizi_list[self.lizi_count], (500, 600))screen.blit(self.lizi_list[self.lizi_count], (800, 550))screen.blit(self.lizi_list[self.lizi_count], (1100, 600))self.lizi_count+=1if self.die_count >=64:self.die_count=0self.life=100self.kill_enemy=0self.die = Falseself.stand = Truereturnif self.stand_count>=24:self.stand_count=1if self.flc_count>=32:self.flc_count=0self.flc=Falseif self.life_count>=8:self.life_count=0self.life_remove_bool=Falseif self.attack_one_count>=13:self.attack_one_count=1self.stand=Trueself.attack_Bool = Falseif self.attack_two_count>=6:self.attack_two_count=1self.stand = Trueself.attack_Bool = Falseif self.attack_three_count>=11:self.attack_three_count=1self.stand = Trueself.attack_Bool = Falseif self.walk_count>=12:self.walk_count=1if self.jump_count>=38:self.jump_count=1if self.jn_count>=40:self.jn_count=1if self.hit_count>=47:self.hit_count=1if self.die_count==20:diren_die_music.play()if self.life_remove_bool and not self.die:screen.blit(self.life_list[self.life_count],(self.x,self.y))if self.life_count==0:player_hit_music.play()elif self.life_count==5:player_hit_music.stop()self.stand=Falseself.i = Falseself.j = Falseself.left=Falseself.right=Falseself.jump = Falseself.flc = Falseself.life_count+=1elif self.stand and not self.jump and not self.i and not self.flc and not self.hit and not self.attack_Bool and not self.life_remove_bool and not self.die:screen.blit(self.stand_list[self.stand_count],(self.x,self.y))self.stand_count+=1elif self.right and not self.stand and not self.jump and not self.i and not self.flc and not self.hit and not self.attack_Bool and not self.life_remove_bool and not self.die: # 如果沒有站立中 并且left=True,screen.blit(self.walk_right[self.walk_count], (self.x,self.y)) # 繪制馬里奧self.walk_count += 1if self.walk_count==2:walk_music.play()elif self.walk_count==1:walk_music.stop()elif self.left and not self.stand and not self.jump and not self.i and not self.flc and not self.hit and not self.attack_Bool and not self.life_remove_bool and not self.die: # 如果沒有站立中 并且left=True,screen.blit(self.walk_left[self.walk_count], (self.x,self.y)) # 繪制馬里奧self.walk_count += 1if self.walk_count==2:walk_music.play()elif self.walk_count==1:walk_music.stop()elif self.flc and not self.die:if self.flc_count==1:feiti_music.play()if self.flc_count==20:feiti_music.stop()screen.blit(self.flc_list[self.flc_count], (self.x, self.y-120))self.flc_count += 1elif self.i and not self.die:screen.blit(self.jn_list[self.jn_count],(self.x,self.y-75))self.jn_count+=1if self.jn_count == 2:jn_music.play()elif self.jn_count == 1:jn_music.stop()elif self.jump and not self.attack_Bool and not self.die:screen.blit(self.jump_list[self.jump_count],(self.x,self.y-75))self.jump_count+=1if self.jump_count == 2:jump_music.play()elif self.jump_count == 1:jump_music.stop()elif self.attack==1 and self.attack_Bool and not self.die:screen.blit(self.attack_list_one[self.attack_one_count],(self.x,self.y))self.attack_one_count += 1if self.attack_one_count==2:attack_music.play()elif self.attack_one_count==1:attack_music.stop()elif self.attack==2 and self.attack_Bool and not self.die:screen.blit(self.attack_list_two[self.attack_two_count],(self.x,self.y))self.attack_two_count += 1if self.attack_two_count == 2:attack_music.play()elif self.attack_two_count == 1:attack_music.stop()elif self.attack==3 and self.attack_Bool and not self.die:screen.blit(self.attack_list_three[self.attack_three_count],(self.x,self.y))self.attack_three_count += 1if self.attack_three_count == 2:attack_music.play()elif self.attack_three_count == 1:attack_music.stop()elif self.hit and not self.die:screen.blit(self.hit_list[self.hit_count],(self.x,self.y))self.hit_count+=1elif self.die:self.life = 0self.skill = Falseself.attack = Falsescreen.blit(self.die_list[self.die_count],(self.x-100,self.y-20))self.die_count+=1self.hit_box = (self.x, self.y, self.width, self.height)if self.levelAdd:LEVAdd = font.render("LEVEL UP ", True, (255, 0, 0))screen.blit(LEVAdd, (player.x - 50, player.y - 50))screen.blit(self.level_tuple[self.level_count],(self.x-40,self.y-90))self.level_count+=1if self.lifeAdd:screen.blit(self.HP_tuple[self.HP_count],(self.x,self.y-40))self.HP_count+=1if self.all:self.all_lenth+=50screen.blit(self.all_tuple[self.all_count],(self.x+self.all_lenth,self.y+(self.height/2)-210))self.all_count+=1

5.5敵人死亡刪除

def die_enemy_green():enemylist.pop() def die_enemy_grey():enemylist2.pop() def die_enemy_pink():enemylist3.pop() def die_enemy_Boss():enemylist4.pop()

5.6 敵方大BOSS

class Boss(object):walk_tuple = () #走路元組skill_tuple = () #遠(yuǎn)攻元組attack_tuple = () #近攻元組life_remove_tuple = () #受傷元組die_tuple = () #死亡元組arm_tuple = () #胳膊元組for pic_num in range(1,13):walk_tuple += (pygame.image.load("./yellow/walk1/1 ("+str(pic_num)+").png"),)for pic_num in range(1,34):skill_tuple += (pygame.image.load("./yellow/skill/skill ("+str(pic_num)+").png"),)for pic_num in range(1,30):attack_tuple += (pygame.image.load("./yellow/attack/attack ("+str(pic_num)+").png"),)for pic_num in range(1,40):life_remove_tuple += (pygame.image.load("./yellow/hit/hit ("+str(pic_num)+").png"),)for pic_num in range(1,13):die_tuple += (pygame.image.load("./yellow/die/die ("+str(pic_num)+").png"),)for pic_num in range(1,13):die_tuple += (pygame.image.load("./yellow/die/die ("+str(pic_num)+").png"),)for pic_num in range(1,13):die_tuple += (pygame.image.load("./yellow/die/die ("+str(pic_num)+").png"),)for pic_num in range(1,13):die_tuple += (pygame.image.load("./yellow/die/die ("+str(pic_num)+").png"),)for pic_num in range(1,13):die_tuple += (pygame.image.load("./yellow/die/die ("+str(pic_num)+").png"),)for pic_num in range(1,7):arm_tuple += (pygame.image.load("./yellow/arm/arm ("+str(pic_num)+").png"),)def __init__(self,x,y,start,end):self.x = xself.y = yself.width = 149self.height = 122self.area = [start,end]self.Yarea = [390-self.height,640-self.height]self.walk_count = 0 #走路圖片索引self.skill_count = 0 #遠(yuǎn)攻圖片索引self.attack_count = 0 #近攻圖片索引self.life_count = 0 #倒地圖片索引self.die_count = 0 #逃跑圖片索引self.arm_count = 0 #胳膊圖片索引self.life = 0 #boss生命值self.speed = 1.5 #x軸移動(dòng)速度self.speed_Y = 1.9 #y軸移動(dòng)速度self.hit_box = (self.x,self.y,self.width,self.height) #碰撞檢測(cè)self.die = Falseself.walk = Trueself.skill=Falseself.attack=Falseself.life_remove_bool=Falseself.Enemy_Y = 0 #保留受傷 Y軸 位置self.enemy_img = pygame.image.load("./HP/enemy_yellow.png") #生命值圖標(biāo)self.game_start_Bool = True #加載血條長(zhǎng)度def draw(self,screen):global HP_img_bossglobal HP_bool_bossif self.game_start_Bool:self.life+=0.5if self.life>15:self.life=15self.game_start_Bool=Falseself.move()if self.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = Falseif self.arm_count>=6:self.arm_count=0if self.life_count>=39:# self.y=self.Enemy_Yself.life_count=0self.life_remove_bool=Falseself.walk=True# 敵方走路if self.walk_count>=12:self.walk_count=0#敵方遠(yuǎn)程攻擊if self.skill_count==20 and not self.life_remove_bool and not self.die:if collision_check_tanke(player, enemylist4[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True# 敵方近程攻擊if self.attack_count == 17 and not self.life_remove_bool and not self.die:if collision_check_tanke_yellow(player, enemylist4[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True#敵方 遠(yuǎn)程 技能if self.skill_count >= 33:self.skill_count = 0self.skill=Falseself.walk=True# 敵方 近程 技能if self.attack_count >= 29:self.attack_count = 0self.attack = Falseself.walk = True

5.7敵方BOSS章魚怪

class Enemy_pink(object):walk_left=()walk_right=()die_list = ()life_remove_list = ()falsh_list=()skill_list=()attack_list = ()for pic_num in range(1,83):attack_list+=(pygame.image.load("./pink/attack/attack1 ("+str(pic_num)+").png"),)for pic_num in range(1,17):walk_left+=(pygame.image.load("./pink/walk/"+str(pic_num)+".png"),)for pic_num in range(16,0,-1):walk_right+=(pygame.image.load("./pink/walk/"+str(pic_num)+".png"),)for pic_num in range(1,51):skill_list+=(pygame.image.load("./pink/skill2/"+str(pic_num)+".png"),)#敵人 先起飛 再死亡for pic_num in range(1,58):die_list+=(pygame.image.load("./pink/die/die ("+str(pic_num)+").png"),)# 減血for pic_num in range(1,29):life_remove_list+=(pygame.image.load("./pink/hit/hit ("+str(pic_num)+").png"),)def __init__(self,x,y,start,end):self.x=xself.y=yself.width=361self.height=179self.area=[start,end]self.Yarea = [440, 500] # Y軸 運(yùn)動(dòng) 區(qū)間self.walk_count=1self.speed=-2self.speed_Y=1.9self.life=0self.hit_box = (self.x, self.y, self.width, self.height)self.die=Falseself.walk=Trueself.die_count=1self.life_count=1self.skill_count=1self.attack_count=0self.life_remove_bool=Falseself.skill=Falseself.attack = Falseself.Enemy_Y=0 #保留受傷 Y軸 位置self.enemy_img = pygame.image.load("./HP/enemy_pink.png")self.HP_img = pygame.image.load("./HP/電池.png")self.game_start_Bool=Truedef draw(self,screen):global HP_img_pinkglobal HP_bool_pinkif self.game_start_Bool:self.life+=0.17if self.life>3:self.life=3self.game_start_Bool=Falseself.move()if self.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = Falseif self.life_count>=28:# self.y=self.Enemy_Yself.life_count=0self.life_remove_bool=Falseself.walk=True# 敵方走路if self.walk_count>=16:self.walk_count=0#敵方遠(yuǎn)程攻擊if self.skill_count==30 and not self.life_remove_bool and not self.die:if collision_check_tanke_jincheng(player, enemylist3[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True# 敵方近程攻擊if self.attack_count == 50 and not self.life_remove_bool and not self.die:if collision_check_tanke(player, enemylist3[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True#敵方 遠(yuǎn)程 技能if self.skill_count >= 50:self.skill_count = 0self.skill=Falseself.walk=True# 敵方 近程 技能if self.attack_count >= 82:self.attack_count = 0self.attack = Falseself.walk = True

5.8敵方BOSS 綠坦克

class Enemy(object):walk_left=()walk_right=()die_list = ()life_remove_list = ()falsh_list=()skill_list=()attack_list = ()for pic_num in range(1,24):attack_list+=(pygame.image.load("./green/attack/attack ("+str(pic_num)+").png"),)for pic_num in range(1,9):walk_left+=(pygame.image.load("./green/walk/walk ("+str(pic_num)+").png"),)for pic_num in range(8,0,-1):walk_right+=(pygame.image.load("./green/walk/walk ("+str(pic_num)+").png"),)for pic_num in range(1,38):skill_list+=(pygame.image.load("./green/skill/skill ("+str(pic_num)+").png"),)#敵人 先起飛 再死亡for pic_num in range(1,40):die_list+=(pygame.image.load("./green/die/hit ("+str(pic_num)+").png"),)for pic_num in range(1,65):die_list+=(pygame.image.load("./green/die/die ("+str(pic_num)+").png"),)# 減血for pic_num in range(1,24):life_remove_list+=(pygame.image.load("./green/die/hit ("+str(pic_num)+").png"),)def __init__(self,x,y,start,end):self.x=xself.y=yself.width=133self.height=95self.area=[start,end]self.Yarea = [300, 360] # Y軸 運(yùn)動(dòng) 區(qū)間self.walk_count=1self.speed=-1.5self.speed_Y=1.9self.life=0self.hit_box = (self.x, self.y, self.width, self.height)self.die=Falseself.walk=Trueself.die_count=1self.life_count=1self.skill_count=1self.attack_count=0self.life_remove_bool=Falseself.skill=Falseself.attack = Falseself.Enemy_Y=0 #保留受傷 Y軸 位置self.enemy_img=pygame.image.load("./HP/enemy_green.png")self.game_start_Bool=Truedef draw(self,screen):global HP_img_greenglobal HP_bool_greenif self.game_start_Bool:self.life+=0.12if self.life > 3:self.life = 3self.game_start_Bool = Falseself.move()if self.life <= 0:self.life_remove_bool = Falseself.die = Trueself.walk = False# 敵方受擊# if self.life_count==2:# self.Enemy_Y=self.yif self.life_count>=23:# self.y=self.Enemy_Yself.life_count=0self.life_remove_bool=Falseself.walk=True# 敵方走路if self.walk_count>=8:self.walk_count=0#敵方遠(yuǎn)程攻擊if self.skill_count==25 and not self.life_remove_bool and not self.die:if collision_check_tanke(player, enemylist[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True# 敵方近程攻擊if self.attack_count == 14 and not self.life_remove_bool and not self.die:if collision_check_tanke_jincheng(player, enemylist[0]):player.life -= 8player.life_remove_bool = Trueif player.life<=0:player.die=True#敵方 遠(yuǎn)程 技能if self.skill_count >= 37:self.skill_count = 0self.skill=Falseself.walk=True# 敵方 近程 技能if self.attack_count >= 23:self.attack_count = 0self.attack = Falseself.walk = True

5.9掉落的血瓶

class Prop_Hp(object):def __init__(self,x,y):self.x=xself.y=yself.width=64self.height=64self.HP=2self.imglist=[pygame.image.load("./HP/HP.png"),pygame.image.load("./HP/HP2.png"),pygame.image.load("./HP/HP3.png"),pygame.image.load("./HP/gun.png"),pygame.image.load("./HP/gun2.png"),pygame.image.load("./HP/gun3.png"),pygame.image.load("./HP/gun4.png")]self.ran=random.randint(0,6)self.img=self.imglist[self.ran]def draw(self,screen):global HP_bool_greenglobal HP_bool_greyglobal HP_bool_pinkscreen.blit(self.img,(self.x,self.y))if HP_bool_grey:if HP_img_grey.imglist.index(HP_img_grey.img)>2:if collision_check_tanke_HP(player, HP_img_grey):player.levelAdd = Trueplayer.level += 1player.life += 5if player.life > 100:player.life = 100HP_bool_grey = Falseelse:if collision_check_tanke_HP(player, HP_img_grey):player.lifeAdd=Trueplayer.life += 5if player.life >= 100:player.life=100HP_bool_grey=Falseif HP_bool_green:if HP_img_green.imglist.index(HP_img_green.img) > 2:if collision_check_tanke_HP(player, HP_img_green):player.levelAdd = Trueplayer.level += 1player.life += 5if player.life > 100:player.life = 100HP_bool_green = Falseelse:if collision_check_tanke_HP(player, HP_img_green):player.lifeAdd = Trueplayer.life += 5if player.life >= 100:player.life=100HP_bool_green=Falseif HP_bool_pink:if HP_img_pink.imglist.index(HP_img_pink.img) > 2:if collision_check_tanke_HP(player, HP_img_pink):player.levelAdd = Trueplayer.level += 1player.life += 5if player.life>100:player.life=100HP_bool_pink = Falseelse:if collision_check_tanke_HP(player, HP_img_pink):player.lifeAdd = Trueplayer.life += 5if player.life >= 100:player.life=100HP_bool_pink=Falseback_music.play(-1)

6.0撿血包

def collision_check_tanke_HP(a,b):temp1= (b.x+b.width>a.x+a.width-30>b.x)#角色的攻擊區(qū)間 容錯(cuò)區(qū)間temp2= (-40<(b.y+b.height)-(a.y+a.height)<=45)return temp1 and temp2

6.1結(jié)束類

def game_over():global checkstart_btn=pygame.image.load("./load_img/重新開始.png")end_btn=pygame.image.load("./load_img/退出游戲.png")failed=pygame.image.load("./load_img/失敗.png")win_img=pygame.image.load("./load_img/勝利.png")bg=pygame.image.load("./map_img/right.jpg")back_music.stop()while True:if check==5:back_music.play(-1)player.life = 100player.x = 0player.kill_enemy = 0check = 1return Truefor event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()#鼠標(biāo)事件if event.type==pygame.MOUSEBUTTONDOWN:# 鼠標(biāo)位置if (495<=event.pos[0]<=495+start_btn.get_width()) and (450<=event.pos[1]<450+start_btn.get_height()):back_music.play(-1)player.life = 100player.x = 0player.kill_enemy = 0check = 1return Trueif (495<=event.pos[0]<=495+start_btn.get_width()) and (320<=event.pos[1]<320+start_btn.get_height()):sys.exit()player.kill_enemy=0screen.blit(bg,(0,0))screen.blit(start_btn,(495,450))screen.blit(end_btn,(495,320))if player.win_bool==False : #失敗screen.blit(failed, (395, 120))if player.win_bool : #勝利screen.blit(win_img, (425, 120))pygame.display.update()

六、效果展示

截圖展示——

6.1游戲界面

?6.2第一小關(guān),其他的幾關(guān)我就沒截圖了哈

?6.3按住U放大這個(gè)技能特別可,遠(yuǎn)攻,其他的攻擊太近了,威力不是很大!get!

6.4敵方機(jī)甲死亡掉落物品

結(jié)尾

好啦!這篇大游戲就寫到這里啦,源碼都是免費(fèi)分享滴。看著這些精致的畫面有沒有想要自己動(dòng)手

玩一下 ,試試嘛~需要完整資料的私信我即可哈或者點(diǎn)這里!傳送門

你們的支持是我最大的動(dòng)力!!記得三連哦~

往期也有文章大家可以自由翻閱哈~感謝大家的支持!

總結(jié)

以上是生活随笔為你收集整理的机甲才是男人的浪漫 这款Python版免费战争机甲类游戏,“白拿党”还在等什么?(超帅气)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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