这是很早之前课余时间写的基于Python/Tkinter单机小游戏,用来练手,今天将代码贴出来,方便大家一起学习,通过Py/Tk对于学习GUI作为一个入口,其实是个不错入口,在这里推荐一下Tcl/Tk这门工具控制语言也是很好的脚本语言,对于快速构建应用GUI以及Demo都有不错的帮助(支持SWIG),国外有人将Tcl/Tk嵌入到C中,可以实现用C快速构建GUI,一直都想将实现这个目标,终因诸多因素搁浅,不能不说这是个遗憾...

注:打包好的win32位exe程序以及代码文件都已经上传到CSDN

游戏截图:

游戏截图1

游戏截图2

阅读代码要求:需要读者对构建TkinterGUI程序函数参数有基本的了解

以及了解基本的Python语法

运行环境:WIN 32位 /LINUX32位

代码行数:700行

游戏介绍

#基于Tk的打飞机游戏                                                                     
#该游戏是基于TkGUI包开发的小游戏,可以通过键盘上的上下左右按键控制飞机,来躲避和击落敌机#的小游戏,游戏包括飞机的控制和发射子弹,以及敌机的生成与下落,当子弹击中敌机,敌机消失,当飞#机碰到敌机生命值减少,当飞机生命值减少为0的时候,游戏结束。

1.初始化

def __init__(self):self.base_path=os.getcwd()#当前路径self.health_point_value=5#生命值self.mark_value=0#分数self.shoot_down_plane_num_value=0 #击落飞机数量self.height_record_val=self.read_pkl_file()#最高历史记录self.root=Tk()self.root.option_add("*Font", "华文中宋")

2.读取配置文件(最高游戏记录)

def read_pkl_file(self):try:pkl_file=open(self.base_path+"//"+'h_r.pkl','rb')data1=pickle.load(pkl_file)pkl_file.close()except Exception,e:output=open(self.base_path+"//"+'h_r.pkl','wb')data_h_r={"heighest_record":0,}pickle.dump(data_h_r,output)output.close()return 0else:return data1['heighest_record']

3.写入配置文件

def write_pkl_file(self,value_h_r):output=open(self.base_path+"//"+'h_r.pkl','wb')data_h_r={"heighest_record":value_h_r,}pickle.dump(data_h_r,output)output.close()

4.游戏主界面

def main_gui(self):def over_game():#self.root.quit()self.root.destroy()os._exit(1)self.root.geometry("420x500")self.root.maxsize(420,500)self.root.minsize(420,500)#ico_path=os.path.join(self.base_path,"plane.ico")#self.root.iconbitmap(ico_path)self.root.title("飞机大战")self.canvas_show=Canvas(self.root,width=320,height=500,bg='white')self.canvas_show.pack(side=LEFT)self.frame_right=Frame(self.root)self.frame_right.pack(side=LEFT,anchor=S,pady=20)self.frame_score1=Frame(self.frame_right)self.score_value1_label=Label(self.frame_score1,text="最高纪录",width=10)self.score_value1_label.pack(side=TOP)self.score_value1_label_tag=Label(self.frame_score1,text=str(self.height_record_val),font=('Vandana',12),width=10)self.score_value1_label_tag.pack(side=TOP)self.frame_score1.pack(side=TOP,pady=20)self.frame_life=Frame(self.frame_right)self.frame_life.pack(side=TOP,pady=10)self.life_num=Label(self.frame_life,text="       ",height=1,font=('Vandana',4),bg="blue")self.life_num.pack(side=TOP,pady=2)self.life_num1=Label(self.frame_life,text="       ",height=1,font=('Vandana',4),bg="blue")self.life_num1.pack(side=TOP,pady=2)self.life_num2=Label(self.frame_life,text="       ",height=1,font=('Vandana',4),bg="blue")self.life_num2.pack(side=TOP,pady=2)self.life_num3=Label(self.frame_life,text="       ",height=1,font=('Vandana',4),bg="blue")self.life_num3.pack(side=TOP,pady=2)self.life_num4=Label(self.frame_life,text="       ",height=1,font=('Vandana',4),bg="blue")self.life_num4.pack(side=TOP,pady=2)self.life_value_label=Label(self.frame_life,text="生命值",width=10)self.life_value_label.pack(side=TOP,pady=2)self.frame_score=Frame(self.frame_right)self.score_value_label=Label(self.frame_score,text="分数",width=10)self.score_value_label.pack(side=TOP)self.score_value_label_tag=Label(self.frame_score,text=str(self.mark_value),font=('Vandana',12),width=10)self.score_value_label_tag.pack(side=TOP)self.frame_score.pack(side=TOP,pady=10)self.frame_shoot_down_num=Frame(self.frame_right)self.pl_num_value_label=Label(self.frame_shoot_down_num,text="击落飞机\n数量")self.pl_num_value_label.pack(side=TOP)self.shoot_down_pl_num_tag=Label(self.frame_shoot_down_num,text=str(self.shoot_down_plane_num_value),font=('Vandana',12),width=10)self.shoot_down_pl_num_tag.pack(side=TOP)self.frame_shoot_down_num.pack(side=TOP,pady=10)self.frame_button=Frame(self.frame_right)start_pause_but=ttk.Button(self.frame_button,text='开始游戏')start_pause_but.pack(side=TOP,pady=5,padx=3)start_pause_but['command']=self.start_game_cmdover_pause_but=ttk.Button(self.frame_button,text='结束游戏')over_pause_but.pack(side=TOP,pady=5,padx=3)over_pause_but['command']=over_gameself.frame_button.pack(side=TOP,pady=10)self.root.mainloop()

5.游戏逻辑控制主模块

def start_game_cmd(self):for i in self.canvas_show.find_all():#清空画布self.canvas_show.delete(i)self.plane_square()#初始化飞机函数self.while_ci_1=0self.over_tag=Falseself.loaded_show_list=[]self.objects_enemy_show=[]self.space_enemy_tag=4while True:self.algorithm_pl_game()#执行游戏算法if self.over_tag==True:#退出游戏算法,给出用户成绩,并且刷新历史记录tkMessageBox.showinfo("提示","不好意思,你完蛋了!\n你的成绩:\n      分数         "+str(self.mark_value)+" \n击落飞机数量   "+str(self.shoot_down_plane_num_value)+" \n")if int(self.height_record_val)<int(self.mark_value):self.write_pkl_file(self.mark_value)self.height_record_val=self.read_pkl_file()self.score_value1_label_tag.configure(text=str(self.height_record_val))for i in self.canvas_show.find_all():self.canvas_show.delete(i)#重新更新游戏界面self.shoot_down_pl_num_tag.configure(text=str(0))self.score_value_label_tag.configure(text=str(0))self.life_num.configure(bg='blue')self.life_num1.configure(bg='blue')self.life_num2.configure(bg='blue')self.life_num3.configure(bg='blue')self.life_num4.configure(bg='blue')self.health_point_value=30self.mark_value=0self.shoot_down_plane_num_value=0break

6.初始化飞机生成以及绑定按键操作函数

 def plane_square(self):#-------------------------------飞机模型的生成以及操作按键的绑定------------------------center_x_bit=150center_y_bit=460center_xx_bit=center_x_bit+10center_yy_bit=center_y_bit+10self.square_pl_head_1=self.canvas_show.create_rectangle(center_x_bit+20,center_y_bit-20,center_xx_bit+20,center_yy_bit-20,fill='red',tags="pl_head_1")self.square_pl_head_2=self.canvas_show.create_rectangle(center_x_bit+10,center_y_bit-10,center_xx_bit+10,center_yy_bit-10,fill='red',tags="pl_head_2")self.square_pl_head_3=self.canvas_show.create_rectangle(center_x_bit+20,center_y_bit-10,center_xx_bit+20,center_yy_bit-10,fill='red',tags="pl_head_3")self.square_pl_head_4=self.canvas_show.create_rectangle(center_x_bit+30,center_y_bit-10,center_xx_bit+30,center_yy_bit-10,fill='red',tags="pl_head_4")self.square_pl_wings_1=self.canvas_show.create_rectangle(center_x_bit,center_y_bit,center_xx_bit,center_yy_bit,fill='red',tags="pl_wings_1")self.square_pl_wings_2=self.canvas_show.create_rectangle(center_x_bit+10,center_y_bit,center_xx_bit+10,center_yy_bit,fill='red',tags="pl_wings_2")self.square_pl_wings_3=self.canvas_show.create_rectangle(center_x_bit+20,center_y_bit,center_xx_bit+20,center_yy_bit,fill='red',tags="pl_one")self.square_pl_wings_4=self.canvas_show.create_rectangle(center_x_bit+30,center_y_bit,center_xx_bit+30,center_yy_bit,fill='red',tags="pl_wings_4")self.square_pl_wings_5=self.canvas_show.create_rectangle(center_x_bit+40,center_y_bit,center_xx_bit+40,center_yy_bit,fill='red',tags="pl_wings_5")self.square_pl_fuselage_1=self.canvas_show.create_rectangle(center_x_bit+15,center_y_bit+10,center_xx_bit+15,center_yy_bit+10,fill='red',tags="pl_fuselage_1")self.square_pl_fuselage_2=self.canvas_show.create_rectangle(center_x_bit+25,center_y_bit+10,center_xx_bit+25,center_yy_bit+10,fill='red',tags="pl_fuselage_2")self.square_pl_tail_1=self.canvas_show.create_rectangle(center_x_bit+10,center_y_bit+20,center_xx_bit+10,center_yy_bit+20,fill='red',tags="pl_tail_1")self.square_pl_tail_2=self.canvas_show.create_rectangle(center_x_bit+20,center_y_bit+20,center_xx_bit+20,center_yy_bit+20,fill='red',tags="pl_tail_2")self.square_pl_tail_3=self.canvas_show.create_rectangle(center_x_bit+30,center_y_bit+20,center_xx_bit+30,center_yy_bit+20,fill='red',tags="pl_tail_3")self.square_object=[self.square_pl_head_1,self.square_pl_head_2,self.square_pl_head_3,self.square_pl_head_4,self.square_pl_wings_1,self.square_pl_wings_2,self.square_pl_wings_3,self.square_pl_wings_4,self.square_pl_wings_5,self.square_pl_fuselage_1,self.square_pl_fuselage_2,self.square_pl_tail_1,self.square_pl_tail_2,self.square_pl_tail_3]self.root.bind('<KeyPress-Left>',self.key_press_left)self.root.bind('<KeyPress-Right>',self.key_press_right)self.root.bind('<KeyPress-Up>',self.key_press_up)self.root.bind('<KeyPress-Down>',self.key_press_down)self.root.bind('<KeyPress-a>',self.key_press_left)self.root.bind('<KeyPress-d>',self.key_press_right)self.root.bind('<KeyPress-w>',self.key_press_up)self.root.bind('<KeyPress-s>',self.key_press_down)

7.光标键左键操作函数

def key_press_left(self,event):#--------按键操作-----#--------向左一格-----self.left_tag=Trueif int(self.canvas_show.coords("pl_wings_1")[0])==0:passelse:for i in self.square_object:self.canvas_show.move(i,-5,0)self.canvas_show.update()

8.光标键右键操作函数

def key_press_right(self,event):#-------按键操作-----#-------向右一格------self.right_tag=Trueif int(self.canvas_show.coords("pl_wings_5")[2])==300:passelse:for i in self.square_object:self.canvas_show.move(i,5,0)self.canvas_show.update()

9.光标键上键操作函数

def key_press_up(self,event):#-------按键操作-----#-------向上一格------self.up_tag=Trueif int(self.canvas_show.coords("pl_one")[1])==0:passelse:for i in self.square_object:self.canvas_show.move(i,0,-10)self.canvas_show.update()

10.光标键下键操作函数

def key_press_down(self,event):#-------按键操作-----#-------向下一格------self.up_tag=Trueif int(self.canvas_show.coords("pl_tail_2")[3])==500:passelse:for i in self.square_object:self.canvas_show.move(i,0,10)self.canvas_show.update()

11.横向随机方位上自顶而下敌机模块的生成

def enemy_plane(self):#---------------------横向随机方位上敌机模块的生成------------------------------------self.rad_pic_min,self.rad_pic_max=5,20rad_pic_int=random.randint(self.rad_pic_min,self.rad_pic_max)center_x_bit=rad_pic_int*10center_y_bit=0center_xx_bit=center_x_bit+10center_yy_bit=center_y_bit+10square_enemy_head_l=self.canvas_show.create_rectangle(center_x_bit+10,center_y_bit+10,center_xx_bit+10,center_yy_bit+10,fill='red',tags="enemy_head_l")square_enemy_head_r=self.canvas_show.create_rectangle(center_x_bit+20,center_y_bit+10,center_xx_bit+20,center_yy_bit+10,fill='red',tags="enemy_head_r")square_enemy_wings_1=self.canvas_show.create_rectangle(center_x_bit,center_y_bit,center_xx_bit,center_yy_bit,fill='red',tags="enemy_wings_1")square_enemy_wings_2=self.canvas_show.create_rectangle(center_x_bit+10,center_y_bit,center_xx_bit+10,center_yy_bit,fill='red',tags="enemy_wings_2")square_enemy_wings_3=self.canvas_show.create_rectangle(center_x_bit+20,center_y_bit,center_xx_bit+20,center_yy_bit,fill='red',tags="enemy_wings_3")square_enemy_wings_4=self.canvas_show.create_rectangle(center_x_bit+30,center_y_bit,center_xx_bit+30,center_yy_bit,fill='red',tags="enemy_wings_4")square_enemy_fuselage=self.canvas_show.create_rectangle(center_x_bit+15,center_y_bit-10,center_xx_bit+15,center_yy_bit-10,fill='red',tags="enemy_fuselage")square_enemy_tail_1=self.canvas_show.create_rectangle(center_x_bit+10,center_y_bit-20,center_xx_bit+10,center_yy_bit-20,fill='red',tags="enemy_tail_1")square_enemy_tail_2=self.canvas_show.create_rectangle(center_x_bit+20,center_y_bit-20,center_xx_bit+20,center_yy_bit-20,fill='red',tags="enemy_tail_2")enemy_obj_square_1=[square_enemy_head_l,square_enemy_head_r,square_enemy_wings_1,square_enemy_wings_2,square_enemy_wings_3,square_enemy_wings_4,square_enemy_fuselage,square_enemy_tail_1,square_enemy_tail_2]return enemy_obj_square_1

12.敌机下落方式的生成

def enemy_down_alg(self):#-----------敌机下落方式的生成------------#获得敌机的中心点,然后算出距离左右两端的距离,获得距离的随机数#然后下落的过程中,边下落边左右移动#返回值为下落标志,左右方向标志,横向移动距离,进行开始横向移动的高度l_boder=self.canvas_show.coords("enemy_wings_1")[0]r_boder=self.canvas_show.coords("enemy_wings_4")[2]l_w_tmp=int(abs(l_boder))r_w_tmp=abs(300-int(r_boder))change_tail=random.randint(0,250)lr_rand_direct=random.randint(0,1)down_tag=random.choice((False,True))if lr_rand_direct==0:lr_w_rand=random.randint(0,l_w_tmp)else:lr_w_rand=random.randint(0,r_w_tmp)return down_tag,lr_rand_direct,lr_w_rand,change_tail  

13.敌机与子弹接触以及我机与敌机碰撞以及敌机控制移动算法

def algorithm_pl_game(self):#-------------------------------飞机算法执行----------------------------------tag_while=Truewhile_ci=0down_way=Falseconut_lf_mov=0self.rate_loaded_num=80#子弹频率self.enemy_plane_down_rate_1=50self.enemy_plane_down_rate_2=90#敌机频率self.down_speed=0.02#下落速度while tag_while==True:#添加显示子弹列表          tags_loaded_much=self.while_ci_1%self.rate_loaded_num#子弹发射频率的确定if tags_loaded_much==0:list_canvas_plone=self.canvas_show.coords("pl_head_1")loaded_square1=self.canvas_show.create_rectangle(list_canvas_plone[0],list_canvas_plone[1]-10,list_canvas_plone[2],list_canvas_plone[3]-10,fill='red',tags="loaded")self.loaded_show_list.append(loaded_square1)#屏幕子弹的移动for i in self.loaded_show_list:self.canvas_show.move(i,0,-3)#添加显示敌机列表self.canvas_show.update()   for i in self.objects_enemy_show:#对下落在底层的敌机进行屏幕删除try:for j in i:    xy_point=self.canvas_show.coords(i[8])if int(xy_point[3])>500:for k in i:self.canvas_show.delete(k)self.objects_enemy_show.remove(i)breakexcept Exception,e:print(e)continueif self.space_enemy_tag==self.while_ci_1:#敌机下落频率的设定space_enemy_num=random.randint(self.enemy_plane_down_rate_1,self.enemy_plane_down_rate_2)self.space_enemy_tag=self.while_ci_1+space_enemy_numenemy_object=self.enemy_plane()self.objects_enemy_show.append((enemy_object))#print(self.objects_enemy_show)down_way,l_or_r_direct,lf_mov_num,start_tail=self.enemy_down_alg()if down_way==True:#屏幕所有敌机的下落显示if while_ci>=start_tail:#判断开始横向移动的高度if conut_lf_mov<=lf_mov_num:#判断横向移动距离if l_or_r_direct==0:#判断敌机横向移动方向for o in range(len(self.objects_enemy_show)):for i in self.objects_enemy_show[o]:if o==len(self.objects_enemy_show)-1:self.canvas_show.move(i,-1,1)else:self.canvas_show.move(i,0,1)else:for o in range(len(self.objects_enemy_show)):for i in self.objects_enemy_show[o]:if o==len(self.objects_enemy_show)-1:self.canvas_show.move(i,1,1)else:self.canvas_show.move(i,0,1)conut_lf_mov+=1else:for o in self.objects_enemy_show:for i in o:self.canvas_show.move(i,0,1)else:for o in self.objects_enemy_show:for i in o:self.canvas_show.move(i,0,1)else:for o in self.objects_enemy_show:for i in o:self.canvas_show.move(i,0,1)self.canvas_show.update() time.sleep(self.down_speed)#对游戏速度的调整while_ci+=1self.while_ci_1+=1if len(self.loaded_show_list)>10:#屏幕子弹显示的消除self.canvas_show.delete(self.loaded_show_list[0])del self.loaded_show_list[0]#---------------------------canvas上所有项的坐标存在检查和存储--------------------plane_main_tags=["pl_head_1","pl_head_2","pl_head_3","pl_head_4","pl_wings_1","pl_wings_2","pl_one","pl_wings_4","pl_wings_5","pl_fuselage_1","pl_fuselage_2","pl_tail_1","pl_tail_2","pl_tail_3"]multiterm_pl_area=[]for i in plane_main_tags:#飞机区域多项坐标存在检查和存储list_pl_position=self.canvas_show.coords(i)square_area_lap=self.canvas_show.find_overlapping(list_pl_position[0]+4,list_pl_position[1]+4,list_pl_position[2]-4,list_pl_position[3]-4)multiterm_pl_area.append(square_area_lap)self.multiterm_enemy_area_object=[]for i in xrange(len(self.objects_enemy_show)):#屏幕所有敌机区域坐标多项存在检查和存储multiterm_enemy_area=[]for k in self.objects_enemy_show[i]:#某一敌机区域坐标多项存在检查和存储list_enemy_position=self.canvas_show.coords(k)square_area_lap_enemy=self.canvas_show.find_overlapping(list_enemy_position[0]+4,list_enemy_position[1]+4,list_enemy_position[2]-4,list_enemy_position[3]-4)multiterm_enemy_area.append((square_area_lap_enemy,i))self.multiterm_enemy_area_object.append(multiterm_enemy_area)all_loaded_area_list=[]for i in self.loaded_show_list:#屏幕所有子弹区域坐标存在多项检查list_loaded=self.canvas_show.coords(i)multiterm_loaded_area=self.canvas_show.find_overlapping(list_loaded[0]+4,list_loaded[1]+4,list_loaded[2]-4,list_loaded[3]-4)all_loaded_area_list.append((multiterm_loaded_area,i))#---------------------------子弹与敌机碰撞检测-------------------------------for j in self.multiterm_enemy_area_object:#遍历屏幕所有敌机for u in xrange(len(j)):#遍历某一敌机所有项for i in xrange(len(all_loaded_area_list)):#遍历屏幕所有子弹区域存在项if j[u][0]==all_loaded_area_list[i][0]:#判断子弹区域与某一敌机的某一区域是否重合for k in j:#删除某一敌机在屏幕上的显示所有项for h in k[0]:self.canvas_show.delete(h)self.canvas_show.update()del self.objects_enemy_show[j[u][1]]#删除所有显示敌机对象里对应碰撞的敌机对象self.canvas_show.update()self.canvas_show.delete(all_loaded_area_list[i][1])#删除碰撞的子弹在屏幕上的显示所有项for h in range(len(self.loaded_show_list)):#删除所有子弹对象里对应碰撞的子弹对象if all_loaded_area_list[i][1]==self.loaded_show_list[h]:del self.loaded_show_list[h]break#self.while_ci_1=0while_ci=0self.canvas_show.update()self.shoot_down_plane_num_value+=1#击落飞机数量self.mark_value=self.shoot_down_plane_num_value*10#分数if self.shoot_down_plane_num_value%50==0 and self.rate_loaded_num>20:self.rate_loaded_num-=5#改变子弹发射频率if self.shoot_down_plane_num_value%80==0 and self.down_speed>0.0001:self.down_speed=self.down_speed/1.5#改变游戏进行速度if self.shoot_down_plane_num_value==100:self.enemy_plane_down_rate_1=50self.enemy_plane_down_rate_2=80#改变敌机下落的频率if self.shoot_down_plane_num_value==200:self.enemy_plane_down_rate_1=50self.enemy_plane_down_rate_2=70#改变敌机下落的频率if self.shoot_down_plane_num_value==300:self.enemy_plane_down_rate_1=50self.enemy_plane_down_rate_2=60#改变敌机下落的频率self.shoot_down_pl_num_tag.configure(text=str(self.shoot_down_plane_num_value))self.score_value_label_tag.configure(text=str(self.mark_value))#更新屏幕上分数与记录敌机数量的显示breakelse:continuebreak#---------------------------飞机碰撞检测----------------------------------self.pengzhuang_stat=Falsefor o in xrange(len(self.multiterm_enemy_area_object)):#遍历所有敌机对象for i in xrange(len(self.multiterm_enemy_area_object[o])):#遍历某一敌机区域所有项的方位for j in xrange(len(multiterm_pl_area)):#遍历飞机区域所有项的方位if multiterm_pl_area[j]==self.multiterm_enemy_area_object[o][i][0] and self.pengzhuang_stat==False:#判断某一敌机区域方位是否与飞机区域方位重合for k in plane_main_tags:self.canvas_show.itemconfigure(k,fill='blue')#给出碰撞警示(飞机各个区域显示为蓝色)self.pengzhuang_stat=Trueself.health_point_value-=1#生命值的减1if self.health_point_value==24:self.life_num.configure(bg='white')                 elif self.health_point_value==18:self.life_num1.configure(bg='white')                                elif self.health_point_value==12:self.life_num2.configure(bg='white')elif self.health_point_value==6:self.life_num3.configure(bg='white')elif self.health_point_value==0:self.life_num4.configure(bg='white')else:passself.canvas_show.update()else:if self.pengzhuang_stat==True:for k in plane_main_tags:self.canvas_show.itemconfigure(k,fill='red')self.pengzhuang_stat==Falseif self.health_point_value<0:#生命值降为0则将生命结束标志置为(真)self.over_tag=True#游戏算法执行标志只为Falsetag_while=False

<完>

感谢阅读,欢迎交流!

基于Python/Tkinter的飞机大战单机小游戏相关推荐

  1. 关于Python初级阶段模仿飞机大战的小游戏制作源码

    # main.py import pygame import sys import traceback import king import face import bb import supply ...

  2. c语言小程序飞机大战,飞机大战微信小游戏:经典像素飞机大战小程序,点开即玩...

    50000+游戏爱好者已加入我们! 每天推荐好玩游戏! 关注我们,沐沐带你发现好游戏! <经典像素飞机大战>游戏小程序好玩吗? <经典像素飞机大战>小游戏怎么玩? 怎么进入&l ...

  3. python轰炸敌机小游戏_python实现飞机大战微信小游戏

    0.前言 我学一种语言,可以说学任何东西都喜欢自己动手实践,总感觉自己动手一遍,就可以理解的更透彻,学python也一样,自己动手写代码,但更喜欢做点小东西出来,一边玩一边学.下面我就展示一下我最近做 ...

  4. python飞机大战游戏素材_python实现飞机大战微信小游戏

    0.前言 我学一种语言,可以说学任何东西都喜欢自己动手实践,总感觉自己动手一遍,就可以理解的更透彻,学python也一样,自己动手写代码,但更喜欢做点小东西出来,一边玩一边学.下面我就展示一下我最近做 ...

  5. HTML+CSS+JS制作【飞机大战】小游戏(键盘版和鼠标版)

    文章目录 一.效果演示 设计思路 二.鼠标版飞机大战代码展示 1.HTML结构代码 2.CSS样式代码 3.JavaScript代码 js.js文件 plane.js文件 三.键盘版飞机大战代码展示 ...

  6. 飞机大战——Java小游戏

    飞机大战 文章目录 飞机大战 游戏需求 代码实现 子弹类 英雄机类 小敌机类 大敌机类 小蜜蜂类 飞行物类 接口类 爆炸类 游戏窗口类 游戏需求 所参与角色:英雄机.子弹.小敌机.大敌机.小蜜蜂.天空 ...

  7. 基于Python实现制作的接金币小游戏

    资源下载地址:https://download.csdn.net/download/sheziqiong/85738332 资源下载地址:https://download.csdn.net/downl ...

  8. 基于Python制作的消消乐小游戏

    导语 哈喽,好久不见.消失人口上线更新一波每月必出的 python 制作小游戏系列文章.本期我们将制作一个消消乐小游戏,让我们愉快地开始吧 开发工具 Python 版本:3.6.4 相关模块: pyg ...

  9. Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏

    (一)课题内容 实现走迷宫. 主要功能为界面显示.上下左右键的响应以及当前步数统计. 通过该课题全面熟悉数组.字符串等的使用,掌握程序设计的基本方法及友好界面的设计. (二)课题要求 1. 基本要求 ...

最新文章

  1. java image filters[02]-过滤器初探
  2. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)
  3. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
  4. XCTF-高手进阶区:bug
  5. LeetCode OJ Symmetric Tree 判断是否为对称树(AC代码)
  6. innobackupex参数之 --throttle 限速这个值设置多少合理 原创
  7. centos选择php7 作为默认版本_树莓派下安装Nginx+Php7.3 搭建Web服务器
  8. 2017-4-24(1493037086057未命名文件 测试资源是否正确上传
  9. C#类对象转换成XML
  10. 设计模式之抽象工厂模式(Abstract Factory)
  11. 20145322何志威《网络对抗》逆向及Bof基础
  12. 如何建立NVivo的人际关系?
  13. 这一次,抄袭的人竟然是Facebook!美版微信要出现了吗?!
  14. pytorch学习五、深度学习计算
  15. 把照片做成计算机符号,把家驹的照片做成了符号的形式
  16. 集合框架中的共性功能
  17. 【PAT甲级 - C++题解】1147 Heaps
  18. 消防应急照明系统在某数据中心项目的应用
  19. 用python写海明校验码
  20. 突然不能从主机向虚拟机上拷贝文件了

热门文章

  1. Oracle查出不属于该表的字段
  2. Redshift有哪些硬件要求?不同项目的电脑配置推荐
  3. JavaScript-Servlet
  4. 侠梦说pinpoint--左侧服务地图调用量和WasOnly含义
  5. 我这个程序员是如何找到女朋友的
  6. 又是一年高考季,你高考过去几年了?
  7. Java web 服务器连接MySQL数据库代码
  8. Nginx之12火眼金睛 - (状态监控 日志分析)
  9. 如何安装apk文件到android模拟器上面
  10. 优化网站应该从哪些方面入手