Introduction
Good morning, everyone—— Do you miss me?
Mu Muzi is coming. Today, I will put a big move on the line for you!
Just learned to record video, and then the dynamic display of the effect is finally perfectly recorded! Today, follow Xiaobian to update a wave of game series we are looking forward to ~ complete information to obtain the flowing text of the home page!
Is it so Kaisen and excited! Come on... Xiaobian will go and have a look with you!
text
This article is an open source game project - Xiaobian will process and optimize it according to his own ideas to show you the effect!
1, Xiaobian has something to say
In fact, this game is a mecha battle mode - don't beat me if I say the following, dog head save your life. jpg
I feel like I lost gold coins, blood bags and so on, which are very similar to the dungeons and warriors that I saw my friend play before! 2333,
It feels like this kind of breakthrough mode that has been brushing all the time. Zhinv said: "look at these games, they are almost the same", but it seems that there are many similar brush boss es on the market
Off, you can also automatically brush the game! BUT I haven't played it, BUT it should be the childhood of many people~
II. Rules of the game
2.1 breakthrough mode
This game has only one level: however, a level is divided into several small bosses, which can be cleared after playing. It shows that the blood volume is 0, and the clearance is unsuccessful. A red mecha, as a player, must defeat all small mecha + small boss. Each time the enemy mecha dies, items with different attributes will be dropped, such as blood bags, equipment, etc. you can collect them for your own use when you are close.
2.2 skill tips
Mecha player role: mecha skill list - I-O-J-U - as the skill key; Mobile list of mecha - W-A-S-D - as up, down, left and right mobile keys.
3, Game material
This game has written thousands of lines of code - game materials, pictures - corresponding background music, etc. - here is only a small part for you!
3.1 pixel style——
3.2 mecha model——
3.3 Adventure
4, Environment installation
This article is a small game! Based on Pygame. Environmental preparation: Python 3, pychar.
pip install -i https://pypi.douban.com/simple/ pygame
5, Because there are too many project codes, only some codes are given here.
5.1 loading animation and sound effects
font = pygame.font.SysFont(None,50,True)# Font True turns on antialiasing load_music=pygame.mixer.Sound("music/11046.wav") start_music=pygame.mixer.Sound("music/Battle background sound.wav") back_music=pygame.mixer.Sound("music/BGM_1 (1)_02.wav") green_jn=pygame.mixer.Sound("music/Enemy skills.wav") green_attack_music=pygame.mixer.Sound("music/Whine.wav") player_hit_music=pygame.mixer.Sound("music/Mecha injury.wav") walk_music=pygame.mixer.Sound("music/Machine walking.wav") jump_music=pygame.mixer.Sound("music/bounce.wav") diren_die_music=pygame.mixer.Sound("music/Tank explosion.wav") jn_music=pygame.mixer.Sound("music/Laser acoustic game jet_1_3.wav") attack_music=pygame.mixer.Sound("music/The enemy's general attack_01_1.wav") check_music=pygame.mixer.Sound("music/Upgrade or get rewards.wav") feiti_music=pygame.mixer.Sound("music/machine stoppage.wav") game_over_music=pygame.mixer.Sound("music/I'll be back.wav") life_add_music=pygame.mixer.Sound("music/Add blood.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 initialize map
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("Mecha battle games") pygame.display.set_icon(start_back) # load_image=() #Start animation list load_count=1 #Start animation loading start_flag=False#Start start_music.play(-1)#Game start sound 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 level animation
class check_fun(object): check_list = [] for pic_num in range(1, 13): check_list+=(pygame.image.load("./right_check/arrow" + str(pic_num) + ".png"),) def __init__(self): self.check_count=1 def draw(self,screen): if self.check_count>=12: self.check_count=1 if self.check_count: screen.blit(self.check_list[self.check_count],(1100,290)) self.check_count+=1
5.4 player role
class Player(object): flc_list=() #Mecha o skill list lizi_list = () #Particle effects 1 List lizi2_list = () #Particle effects 2 List lizi3_list =() #Particle effects 3 list walk_right = () #Mecha left list walk_left = () #Mecha left list jn_list = () #Mecha i skill list jump_list = () #Mecha jump skill list hit_list = () #Mecha injury list attack_list_one=() #List of first paragraph of close attack attack_list_two = () #List of the second paragraph of close attack attack_list_three = () #List of the third paragraph of close attack life_list=() #Mecha injury list die_list=() #Mecha HP list 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=x self.y=y self.width=width self.height=height self.speed=1 self.left=False self.right=True self.stand=True self.jump=False self.i=False self.hit=False self.attack=0 self.stand_count=1#Standing picture index self.walk_count=1#Walking picture index self.jump_count=1#Jump picture index self.jn_count=1#Picture index of skill i self.hit_count=1#Injured picture index self.attack_Bool=False self.attack_one_count = 1#A picture index of general attack self.attack_two_count = 1 # Picture index of two-stage general attack self.attack_three_count = 1 # Picture index of three general attacks self.life=100 self.t=10 self.hit_box = (self.x, self.y, self.width, self.height) # Position size variable of collision box self.kill_enemy=0 self.life_remove_bool=False self.life_count=0 self.lizi_count=1 self.lizi2_count = 1 self.flc_count=0 self.lizi3_count=1 self.HP_count=0 self.cd_count=0 self.all_count=0 self.cd=False self.levelAdd=False self.level=1 self.flc=False self.die=False self.all=False self.die_count=0 self.level_count=0 self.HP_img=pygame.image.load("./HP/Battery.png") self.skill_img = pygame.image.load("./HP/skill_num.png") self.player_img = pygame.image.load("./HP/head.png") self.win_bool=False self.lifeAdd=False self.all_lenth=50 def draw(self,screen): if self.all_count>=16: self.all_count=0 self.all=False self.all_lenth=50 if player.all_count>14: U_Testing(enemylist) U_Testing(enemylist2) U_Testing(enemylist3) U_Testing(enemylist4) if self.cd_count>=11: self.cd_count=0 self.cd=False if self.HP_count == 2: life_add_music.play() if self.HP_count>=16: life_add_music.stop() self.HP_count=0 self.lifeAdd = False if 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=0 self.levelAdd = False if self.lizi_count>=48: self.lizi_count=1 if self.lizi2_count>=33: self.lizi2_count=1 if self.lizi3_count>=80: self.lizi3_count=1 if 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 += 1 if 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+=1 if self.die_count >=64: self.die_count=0 self.life=100 self.kill_enemy=0 self.die = False self.stand = True return if self.stand_count>=24: self.stand_count=1 if self.flc_count>=32: self.flc_count=0 self.flc=False if self.life_count>=8: self.life_count=0 self.life_remove_bool=False if self.attack_one_count>=13: self.attack_one_count=1 self.stand=True self.attack_Bool = False if self.attack_two_count>=6: self.attack_two_count=1 self.stand = True self.attack_Bool = False if self.attack_three_count>=11: self.attack_three_count=1 self.stand = True self.attack_Bool = False if self.walk_count>=12: self.walk_count=1 if self.jump_count>=38: self.jump_count=1 if self.jn_count>=40: self.jn_count=1 if self.hit_count>=47: self.hit_count=1 if 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=False self.i = False self.j = False self.left=False self.right=False self.jump = False self.flc = False self.life_count+=1 elif 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+=1 elif 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: # If you are not standing and left=True, screen.blit(self.walk_right[self.walk_count], (self.x,self.y)) # Draw Mario self.walk_count += 1 if 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: # If you are not standing and left=True, screen.blit(self.walk_left[self.walk_count], (self.x,self.y)) # Draw Mario self.walk_count += 1 if 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 += 1 elif self.i and not self.die: screen.blit(self.jn_list[self.jn_count],(self.x,self.y-75)) self.jn_count+=1 if 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+=1 if 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 += 1 if 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 += 1 if 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 += 1 if 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+=1 elif self.die: self.life = 0 self.skill = False self.attack = False screen.blit(self.die_list[self.die_count],(self.x-100,self.y-20)) self.die_count+=1 self.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+=1 if self.lifeAdd: screen.blit(self.HP_tuple[self.HP_count],(self.x,self.y-40)) self.HP_count+=1 if self.all: self.all_lenth+=50 screen.blit(self.all_tuple[self.all_count],(self.x+self.all_lenth,self.y+(self.height/2)-210)) self.all_count+=1
5.5 enemy death delete
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 enemy BOSS
class Boss(object): walk_tuple = () #Walking tuple skill_tuple = () #Far attack tuple attack_tuple = () #Near attack tuple life_remove_tuple = () #Injured tuple die_tuple = () #Death tuple arm_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 = x self.y = y self.width = 149 self.height = 122 self.area = [start,end] self.Yarea = [390-self.height,640-self.height] self.walk_count = 0 #Walking picture index self.skill_count = 0 #Remote attack image index self.attack_count = 0 #Near attack picture index self.life_count = 0 #Falling picture index self.die_count = 0 #Escape picture index self.arm_count = 0 #Arm picture index self.life = 0 #boss health self.speed = 1.5 #x-axis moving speed self.speed_Y = 1.9 #y-axis moving speed self.hit_box = (self.x,self.y,self.width,self.height) #collision detection self.die = False self.walk = True self.skill=False self.attack=False self.life_remove_bool=False self.Enemy_Y = 0 #Retain the Y-axis position self.enemy_img = pygame.image.load("./HP/enemy_yellow.png") #Health Icon self.game_start_Bool = True #Length of loaded blood bar def draw(self,screen): global HP_img_boss global HP_bool_boss if self.game_start_Bool: self.life+=0.5 if self.life>15: self.life=15 self.game_start_Bool=False self.move() if self.life <= 0: self.life_remove_bool = False self.die = True self.walk = False if self.arm_count>=6: self.arm_count=0 if self.life_count>=39: # self.y=self.Enemy_Y self.life_count=0 self.life_remove_bool=False self.walk=True # Enemy walking if self.walk_count>=12: self.walk_count=0 #Enemy long range attack if self.skill_count==20 and not self.life_remove_bool and not self.die: if collision_check_tanke(player, enemylist4[0]): player.life -= 8 player.life_remove_bool = True if player.life<=0: player.die=True # Enemy short range attack 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 -= 8 player.life_remove_bool = True if player.life<=0: player.die=True #Enemy long range skills if self.skill_count >= 33: self.skill_count = 0 self.skill=False self.walk=True # Enemy short range skill if self.attack_count >= 29: self.attack_count = 0 self.attack = False self.walk = True
5.7 enemy BOSS Octopus monster
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"),) #The enemy took off before he died for pic_num in range(1,58): die_list+=(pygame.image.load("./pink/die/die ("+str(pic_num)+").png"),) # Blood reduction 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=x self.y=y self.width=361 self.height=179 self.area=[start,end] self.Yarea = [440, 500] # Y-axis motion interval self.walk_count=1 self.speed=-2 self.speed_Y=1.9 self.life=0 self.hit_box = (self.x, self.y, self.width, self.height) self.die=False self.walk=True self.die_count=1 self.life_count=1 self.skill_count=1 self.attack_count=0 self.life_remove_bool=False self.skill=False self.attack = False self.Enemy_Y=0 #Retain the Y-axis position self.enemy_img = pygame.image.load("./HP/enemy_pink.png") self.HP_img = pygame.image.load("./HP/Battery.png") self.game_start_Bool=True def draw(self,screen): global HP_img_pink global HP_bool_pink if self.game_start_Bool: self.life+=0.17 if self.life>3: self.life=3 self.game_start_Bool=False self.move() if self.life <= 0: self.life_remove_bool = False self.die = True self.walk = False if self.life_count>=28: # self.y=self.Enemy_Y self.life_count=0 self.life_remove_bool=False self.walk=True # Enemy walking if self.walk_count>=16: self.walk_count=0 #Enemy long range attack 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 -= 8 player.life_remove_bool = True if player.life<=0: player.die=True # Enemy short range attack if self.attack_count == 50 and not self.life_remove_bool and not self.die: if collision_check_tanke(player, enemylist3[0]): player.life -= 8 player.life_remove_bool = True if player.life<=0: player.die=True #Enemy long range skills if self.skill_count >= 50: self.skill_count = 0 self.skill=False self.walk=True # Enemy short range skill if self.attack_count >= 82: self.attack_count = 0 self.attack = False self.walk = True
5.8 enemy BOSS green tank
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"),) #The enemy took off before he died 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"),) # Blood reduction 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=x self.y=y self.width=133 self.height=95 self.area=[start,end] self.Yarea = [300, 360] # Y-axis motion interval self.walk_count=1 self.speed=-1.5 self.speed_Y=1.9 self.life=0 self.hit_box = (self.x, self.y, self.width, self.height) self.die=False self.walk=True self.die_count=1 self.life_count=1 self.skill_count=1 self.attack_count=0 self.life_remove_bool=False self.skill=False self.attack = False self.Enemy_Y=0 #Retain the Y-axis position self.enemy_img=pygame.image.load("./HP/enemy_green.png") self.game_start_Bool=True def draw(self,screen): global HP_img_green global HP_bool_green if self.game_start_Bool: self.life+=0.12 if self.life > 3: self.life = 3 self.game_start_Bool = False self.move() if self.life <= 0: self.life_remove_bool = False self.die = True self.walk = False # Enemy attacked # if self.life_count==2: # self.Enemy_Y=self.y if self.life_count>=23: # self.y=self.Enemy_Y self.life_count=0 self.life_remove_bool=False self.walk=True # Enemy walking if self.walk_count>=8: self.walk_count=0 #Enemy long range attack if self.skill_count==25 and not self.life_remove_bool and not self.die: if collision_check_tanke(player, enemylist[0]): player.life -= 8 player.life_remove_bool = True if player.life<=0: player.die=True # Enemy short range attack 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 -= 8 player.life_remove_bool = True if player.life<=0: player.die=True #Enemy long range skills if self.skill_count >= 37: self.skill_count = 0 self.skill=False self.walk=True # Enemy short range skill if self.attack_count >= 23: self.attack_count = 0 self.attack = False self.walk = True
5.9 dropped blood bottles
class Prop_Hp(object): def __init__(self,x,y): self.x=x self.y=y self.width=64 self.height=64 self.HP=2 self.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_green global HP_bool_grey global HP_bool_pink screen.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 = True player.level += 1 player.life += 5 if player.life > 100: player.life = 100 HP_bool_grey = False else: if collision_check_tanke_HP(player, HP_img_grey): player.lifeAdd=True player.life += 5 if player.life >= 100: player.life=100 HP_bool_grey=False if 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 = True player.level += 1 player.life += 5 if player.life > 100: player.life = 100 HP_bool_green = False else: if collision_check_tanke_HP(player, HP_img_green): player.lifeAdd = True player.life += 5 if player.life >= 100: player.life=100 HP_bool_green=False if 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 = True player.level += 1 player.life += 5 if player.life>100: player.life=100 HP_bool_pink = False else: if collision_check_tanke_HP(player, HP_img_pink): player.lifeAdd = True player.life += 5 if player.life >= 100: player.life=100 HP_bool_pink=False back_music.play(-1)
6.0 blood bag collection
def collision_check_tanke_HP(a,b): temp1= (b.x+b.width>a.x+a.width-30>b.x) #Role attack interval fault tolerance interval temp2= (-40<(b.y+b.height)-(a.y+a.height)<=45) return temp1 and temp2
6.1 end class
def game_over(): global check start_btn=pygame.image.load("./load_img/restart.png") end_btn=pygame.image.load("./load_img/Exit the game.png") failed=pygame.image.load("./load_img/fail.png") win_img=pygame.image.load("./load_img/victory.png") bg=pygame.image.load("./map_img/right.jpg") back_music.stop() while True: if check==5: back_music.play(-1) player.life = 100 player.x = 0 player.kill_enemy = 0 check = 1 return True for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() #Mouse event if event.type==pygame.MOUSEBUTTONDOWN: # Mouse position 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 = 100 player.x = 0 player.kill_enemy = 0 check = 1 return True if (495<=event.pos[0]<=495+start_btn.get_width()) and (320<=event.pos[1]<320+start_btn.get_height()): sys.exit() player.kill_enemy=0 screen.blit(bg,(0,0)) screen.blit(start_btn,(495,450)) screen.blit(end_btn,(495,320)) if player.win_bool==False : #fail screen.blit(failed, (395, 120)) if player.win_bool : #victory screen.blit(win_img, (425, 120)) pygame.display.update()
6, Effect display
Screenshot display——
6.1 game interface
6.2 I don't have screenshots of the first level and the other levels
6.3 press and hold U to enlarge this skill. It can attack from a distance. Other attacks are too close and are not very powerful! get!
6.4 items dropped by enemy mecha
Video display——
Hahaha, the effect comes out! The first dynamic effect with video is satisfied!! After that, we will try our best to optimize drops ~ thank you!
Python game practice: machine armor battle breakthrough mode adventure!
summary
All right! This big game is written here. The source code is shared for free. Looking at these exquisite pictures, do you want to play by yourself and have a try~
Your support is my biggest motivation!! Remember the third company ~mua Welcome to read previous articles~