这是游戏截图,是不是很挫!哈哈,本人python游戏处女作,望请谅解: 代码量:400行 图片源:用win7自带画图软件----(附件下)图画所画: 各图片及命名如上图所示。如果想运行本文所展示的代码,可照下列步骤: 一、依葫芦画瓢,照上图所示,使用win7自带图画工具进行制作,命名依据图片中所示(忽其中命名中带截图二字的图片),保存目录为D:\tank\。 二、copy下述代码至python编辑器(版本为2.7,必须要有pygame库),然后运行(注意缩进),即可。代码如下:
import pygame from pygame.locals import * from sys import exit import random import time pygame.init() screen = pygame.display.set_mode((640, 480), 0, 32) color0=(0,0,0) color1=(127,1,7) class block_point: def __init__(self,name,pos): self.name = name self.xpos = pos[0] self.ypos = pos[1] def born_out(self): pygame.draw.line(screen, color1, (self.xpos,self.ypos),(self.xpos+24,self.ypos),24) def die(self): pygame.draw.line(screen, color0, (self.xpos,self.ypos),(self.xpos+24,self.ypos),24) map_1=block_point('1',(0,240)) map_2=block_point('2',(24,240)) map_3=block_point('3',(48,240)) map_4=block_point('4',(72,240)) map_5=block_point('5',(96,240)) map_6=block_point('6',(120,240)) map_7=block_point('7',(144,240)) map_8=block_point('8',(168,240)) map_9=block_point('9',(192,240)) map_10=block_point('10',(216,240)) map_11=block_point('11',(640-0,240)) map_12=block_point('12',(640-24,240)) map_13=block_point('13',(640-48,240)) map_14=block_point('14',(640-72,240)) map_15=block_point('15',(640-96,240)) map_16=block_point('16',(640-120,240)) map_17=block_point('17',(640-144,240)) map_18=block_point('18',(640-168,240)) map_19=block_point('19',(640-192,240)) map_20=block_point('20',(640-216,240)) ini_done=False class paodan: paodan_jiazu=range(1000) paodan_num=0 paodan_posx=range(1000) paodan_posy=range(1000) def __init__(self,st,pos,dir_0n): self.st=st self.pos=pos self.dir_0n=dir_0n self.surface_1=pygame.image.load('D:\\tank\\paodan.jpg').convert() self.surface_2=pygame.image.load('D:\\tank\\paodanmeile.jpg').convert() paodan.paodan_num=zidan.zidan_num+1 paodan.paodan_jiazu[st]=st paodan.paodan_posx[st]=pos[0] paodan.paodan_posy[st]=pos[1] def flyaway(self): if self.dir_0n==1: self.pos[1]-=20 elif self.dir_0n==2: self.pos[0]+=20 elif self.dir_0n==3: self.pos[1]+=20 elif self.dir_0n==4: self.pos[0]-=20 class zidan: zidan_jiazu=range(1000) zidan_num=0 reg_posx=range(1000) reg_posy=range(1000) def __init__(self,name,pos,dir_0n): self.name=name self.pos=pos self.dir_0n=dir_0n self.surface_2=pygame.image.load('D:\\tank\\zidan.jpg').convert() self.surface_3=pygame.image.load('D:\\tank\\zidanbujianle.jpg').convert() zidan.zidan_num=zidan.zidan_num+1 zidan.zidan_jiazu[name]=name zidan.reg_posx[name]=pos[0] zidan.reg_posy[name]=pos[1] def flyaway(self): if self.dir_0n==1: self.pos[1]+=10 elif self.dir_0n==2: self.pos[0]-=10 elif self.dir_0n==3: self.pos[1]-=10 elif self.dir_0n==4: self.pos[0]+=10 global paodandaole paodandaole=False class tank_mine: def __init__(self,name,pos): self.name=name self.pos=pos#self.posre=pos self.surface_m=pygame.image.load('D:\\tank\\mine1.jpg').convert() self.surface_mei=pygame.image.load('D:\\tank\\minemei.jpg').convert() self.dir0n=1 self.qiangkoi=[pos[0]+24,pos[1]] self.paodan=False def paodana(self): self.paodan=False spacemeian=True time_skip=0 while True: time_skip=time_skip+1 if time_skip>=200: break else: pressedjj=pygame.key.get_pressed() if spacemeian and pressedjj[K_SPACE]: spacemeian=False self.paodan=True else: self.paodan=self.paodan def move(self): time_skip=0#self.posre=self.pos meian=True while True: pressed_keys=pygame.key.get_pressed() pygame.time.wait(1) time_skip=time_skip+1 if time_skip>=200: break else: if meian and pressed_keys[K_LEFT]: self.dir0n=4 meian=False self.qiangkoi=[self.pos[0],self.pos[1]+24] if self.pos[0]<=10: self.pos[0]=self.pos[0] self.surface_m=pygame.image.load('D:\\tank\\mine4.jpg').convert() else: self.dir0n=4 self.pos[0]-=10 self.surface_m=pygame.image.load('D:\\tank\\mine4.jpg').convert() elif meian and pressed_keys[K_RIGHT]: self.dir0n=2 meian=False self.qiangkoi=[self.pos[0]+48,self.pos[1]+24] if self.pos[0]>=640-48: self.pos[0]=self.pos[0] self.surface_m=pygame.image.load('D:\\tank\\mine2.jpg').convert() else: self.dir0n=2 self.pos[0]+=10 self.surface_m=pygame.image.load('D:\\tank\\mine2.jpg').convert() elif meian and pressed_keys[K_UP]: self.dir0n=1 self.qiangkoi=[self.pos[0]+24,self.pos[1]] meian=False if self.pos[1]<=10: self.pos[1]=self.pos[1] self.surface_m=pygame.image.load('D:\\tank\\mine1.jpg').convert() else: self.dir0n=1 self.pos[1]-=10 self.surface_m=pygame.image.load('D:\\tank\\mine1.jpg').convert() elif meian and pressed_keys[K_DOWN]: self.dir0n=3 meian=False self.qiangkoi=[self.pos[0]+24,self.pos[1]+48] if self.pos[1]>=480-48: self.pos[1]=self.pos[1] self.surface_m=pygame.image.load('D:\\tank\\mine3.jpg').convert() else: self.dir0n=3 self.pos[1]+=10 self.surface_m=pygame.image.load('D:\\tank\\mine3.jpg').convert() else: self.dir0n=self.dir0n return self.paodan,self.qiangkoi,self.dir0n wodetank=tank_mine('dengrui',[640-48,480-48]) class tank_diren: tank_dir=1 tank_pos=[0,0] tank_qiangkou=[0,0] num=0#down surface_1=pygame.image.load('D:\\tank\\1.jpg').convert() def __init__(self,name,pos): self.name=name self.pos=pos self.tank_pos=pos self.tank_dir=1 tank_diren.num=tank_diren.num+1 tank_diren.tank_pos=pos tank_diren.tank_qiangkou=[pos[0]+43,pos[1]+85] tank_diren.surface_1=pygame.image.load('D:\\tank\\1.jpg').convert() def born_out(self): tank_diren.surface_1=pygame.image.load('D:\\tank\\1.jpg').convert() def die(self): if paodandaole: screen.fill((255,255,255)) pygame.time.wait(200) exit() else: dasfa873=1 def luan(self): a=random.randint(0,16) if a==1 or a==2 or a==3 or a==4 or a==5 or a==6:#stop tank_diren.tank_pos[1]=tank_diren.tank_pos[1] elif a==7 or a==8 or a==9: if tank_diren.tank_pos[1]<=380: if tank_diren.tank_dir==1: tank_diren.surface_1=pygame.image.load('D:\\tank\\1.jpg').convert() tank_diren.tank_pos[1]=tank_diren.tank_pos[1]+20 tank_diren.tank_qiangkou=[tank_diren.tank_pos[0]+43,tank_diren.tank_pos[1]+85] else: tank_diren.surface_1=pygame.image.load('D:\\tank\\1.jpg').convert() tank_diren.tank_pos[1]=tank_diren.tank_pos[1]+20 tank_diren.tank_dir=1 tank_diren.tank_qiangkou=[tank_diren.tank_pos[0]+43,tank_diren.tank_pos[1]+85] else: tank_diren.tank_pos[1]=tank_diren.tank_pos[1] elif a==10 or a==11: if tank_diren.tank_pos[1]>=20: if tank_diren.tank_dir==3: tank_diren.surface_1=pygame.image.load('D:\\tank\\3.jpg').convert() tank_diren.tank_pos[1]=tank_diren.tank_pos[1]-20 tank_diren.tank_qiangkou=[tank_diren.tank_pos[0]+43,tank_diren.tank_pos[1]] else: tank_diren.surface_1=pygame.image.load('D:\\tank\\3.jpg').convert() tank_diren.tank_pos[1]=tank_diren.tank_pos[1]-20 tank_diren.tank_dir=3 tank_diren.tank_qiangkou=[tank_diren.tank_pos[0]+43,tank_diren.tank_pos[1]] else: tank_diren.tank_pos[1]=tank_diren.tank_pos[1] elif a==12 or a==13 or a==14: if tank_diren.tank_pos[0]<=540: if tank_diren.tank_dir==4: tank_diren.surface_1=pygame.image.load('D:\\tank\\4.jpg').convert() tank_diren.tank_pos[0]=tank_diren.tank_pos[0]+20 tank_diren.tank_qiangkou=[tank_diren.tank_pos[0]+85,tank_diren.tank_pos[1]+43] else: tank_diren.surface_1=pygame.image.load('D:\\tank\\4.jpg').convert() tank_diren.tank_pos[0]=tank_diren.tank_pos[0]+20 tank_diren.tank_dir=4 tank_diren.tank_qiangkou=[tank_diren.tank_pos[0]+85,tank_diren.tank_pos[1]+43] else: tank_diren.tank_pos[1]=tank_diren.tank_pos[1] elif a==15 or a==16: if tank_diren.tank_pos[0]>=20: if tank_diren.tank_dir==2: tank_diren.surface_1=pygame.image.load('D:\\tank\\2.jpg').convert() tank_diren.tank_pos[0]=tank_diren.tank_pos[0]-20 tank_diren.tank_qiangkou=[tank_diren.tank_pos[0],tank_diren.tank_pos[1]+43] else: tank_diren.surface_1=pygame.image.load('D:\\tank\\2.jpg').convert() tank_diren.tank_pos[0]=tank_diren.tank_pos[0]-20 tank_diren.tank_dir=2 tank_diren.tank_qiangkou=[tank_diren.tank_pos[0],tank_diren.tank_pos[1]+43] else: tank_diren.tank_pos[1]=tank_diren.tank_pos[1] return tank_diren.tank_dir zero=tank_diren(1,[0,0]) def replace(): return pygame.image.load('D:\\tank\\5.jpg').convert() def replace_1(): return pygame.image.load('D:\\tank\\zidanbujianle.jpg').convert() def youwin(): screen.fill((255,255,255)) bbs=pygame.image.load('D:\\tank\\yingle.jpg').convert() screen.blit(bbs,(0,0)) pygame.display.update() pygame.time.wait(1000) exit() def youfail(): screen.fill((0,0,0)) aas=pygame.image.load('D:\\tank\\shule.jpg').convert() screen.blit(aas,(0,0)) pygame.display.update() pygame.time.wait(1000) exit() def dabai(paodanpos,direnpos,laoguixueliang): if paodanpos[0]>=direnpos[0]: if paodanpos[0]<=direnpos[0]+85: if paodanpos[1]>=direnpos[1]: if paodanpos[1]<=direnpos[1]+85: laoguixueliang-=1 if laoguixueliang<=0: youwin() else: dd=1 return laoguixueliang def shule(zidanpos,wodepos,wodexueliang): if zidanpos[0]>=wodepos[0] and zidanpos[0]<=wodepos[0]+85 and zidanpos[1]>=wodepos[1] and zidanpos[1]<=wodepos[1]+85: wodexueliang-=1 if wodexueliang<=0: youfail() else: dd=1 return wodexueliang zidanzu=range(1001) zidan_num=0 paodanzu=range(1001) paodannum=0 while True: for event in pygame.event.get(): if event.type == QUIT: exit() if ini_done==False: map_1.born_out() map_2.born_out() map_3.born_out() map_4.born_out() map_5.born_out() map_6.born_out() map_7.born_out() map_8.born_out() map_9.born_out() map_10.born_out() map_11.born_out() map_12.born_out() map_13.born_out() map_14.born_out() map_15.born_out() map_16.born_out() map_17.born_out() map_18.born_out() map_19.born_out() map_20.born_out() ini_done=True zero.born_out() screen.blit(zero.surface_1,zero.tank_pos) screen.blit(wodetank.surface_m,wodetank.pos) zidanzu[1]=zidan(1,zero.tank_qiangkou,zero.tank_dir) zidan_num=zidan_num+1 screen.blit(zidanzu[1].surface_2,zidanzu[1].pos) paodannum+=1 paodanzu[0]=paodan(paodannum,[640,480],4) laoguixueliang=100 wodexueliang=100 else: screen.blit(wodetank.surface_mei,wodetank.pos) wodetank.paodana() [paodanle,qqk,ddi]=wodetank.move() if paodanle: pygame.time.wait(1) if paodannum>=999: paodanzu[paodannum]=paodan(paodannum,qqk,ddi) for jj in range(paodannum): screen.blit(paodanzu[jj].surface_2,paodanzu[jj].pos) paodannum=0 else: paodanzu[paodannum]=paodan(paodannum,qqk,ddi) paodannum+=1 else: hnkn=1; for iii in range(paodannum): screen.blit(paodanzu[iii].surface_2,paodanzu[iii].pos) #dabai(paodanzu[iii].pos,zero.tank_pos) paodanzu[iii].flyaway() laoguixueliang=dabai(paodanzu[iii].pos,zero.tank_pos,laoguixueliang) screen.blit(paodanzu[iii].surface_1,paodanzu[iii].pos) #pygame.time.wait(200) screen.blit(wodetank.surface_m,wodetank.pos) screen.blit(replace(),zero.tank_pos) dirii=zero.luan() if zidan_num<=999: zidan_num=zidan_num+1 zidanzu[zidan_num]=zidan(zidan_num,zero.tank_qiangkou,dirii) for ii in range(zidan_num): if ii==0: dhskjas=1 else: #shule(zidanzu[ii].pos,wodetank.pos) screen.blit(zidanzu[ii].surface_3,zidanzu[ii].pos) zidanzu[ii].flyaway() wodexueliang=shule(zidanzu[ii].pos,wodetank.pos,wodexueliang) screen.blit(zidanzu[ii].surface_2,zidanzu[ii].pos) else: for ii in range(zidan_num): screen.blit(zidanzu[ii].surface_3,zidanzu[ii].pos) zidan_num=0 screen.blit(zero.surface_1,zero.tank_pos) if laoguixueliang<=25: rrxue=pygame.image.load('D:\\tank\\laoguiyidixue.jpg').convert() screen.blit(rrxue,[640-148,0]) elif laoguixueliang>25 and laoguixueliang<=50: rrxue=pygame.image.load('D:\\tank\\laoguierdixue.jpg').convert() screen.blit(rrxue,[640-148,0]) elif laoguixueliang>50 and laoguixueliang<=75: rrxue=pygame.image.load('D:\\tank\\laoguisandixue.jpg').convert() screen.blit(rrxue,[640-148,0]) elif laoguixueliang>75: rrxue=pygame.image.load('D:\\tank\\laoguimanxue.jpg').convert() screen.blit(rrxue,[640-148,0]) pygame.display.update() |
|
来自: 小小锐DarkRose > 《python》