python中pygame制作的小项目_python.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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值