# coding:utf-8
import pygame
import sys
import time
from random import randint
from pygame.locals import *
class TankMain():
# "主窗口"
width = 900
height = 600
my_missile_list = []
my_tank = None
# enemy_list = []
enemy_list_tank = pygame.sprite.Group()
enemy_missile_list = pygame.sprite.Group()
explode_list = []
# 开始方法
def startGame(self):
pygame.init()
# 0,固定大小 ,resize ,ful 大写
# 32 颜色
screem = pygame.display.set_mode((TankMain.width, TankMain.height), 0, 32)
pygame.display.set_caption("坦克大战")
TankMain.wall = Wall(screem, 80, 160, 300, 30)
TankMain.my_tank = My_Tank(screem)
for i in range(1, 6):
TankMain.enemy_list_tank.add(Enemy_Tank(screem))
while 1:
if len(TankMain.enemy_list_tank) < 5:
TankMain.enemy_list_tank.add(Enemy_Tank(screem))
# color reb(0)(255)
screem.fill((0, 0, 0))
# 显示左上角文字
for i, text in enumerate(self.write_text(), 1):
screem.blit(text, (0, 5+(20*i)))
TankMain.wall.wall_display()
TankMain.wall.wall_hit_other()
# screem.blit(self.write_text(), (0, 5))
self.get_even(TankMain.my_tank, screem)
if TankMain.my_tank:
TankMain.my_tank.hit_enemy_missile()
if TankMain.my_tank and TankMain.my_tank.live:
TankMain.my_tank.display()
TankMain.my_tank.tank_move()
else:
TankMain.my_tank = None
for enemy in TankMain.enemy_list_tank:
enemy.display()
enemy.rand_move()
enemy.rand_fire()
for m in TankMain.my_missile_list:
if m.live:
m.display()
m.hit_tank()
m.miss_move()
else:
TankMain.my_missile_list.remove(m)
for e in TankMain.enemy_missile_list:
if e.live:
e.display()
e.miss_move()
else:
TankMain.enemy_missile_list.remove(e)
for explode in TankMain.explode_list:
explode.display()
time.sleep(0.1)
pygame.display.update()
def get_even(self, my_tank, screem):
for event in pygame.event.get():
if event.type == QUIT:
self.stopGame()
if event.type == KEYDOWN and (not my_tank) and event.key == K_r:
TankMain.my_tank = My_Tank(screem)
if event.type == KEYDOWN and my_tank:
if event.key == K_a:
my_tank.direction = "L"
my_tank.stop = False
# my_tank.tank_move()
if event.key == K_d:
my_tank.direction = "R"
my_tank.stop = False
# my_tank.tank_move()
if event.key == K_w:
my_tank.direction = "U"
my_tank.stop = False
# my_tank.tank_move()
if event.key == K_s:
my_tank.direction = "D"
my_tank.stop = False
# my_tank.tank_move()
if event.key == K_SPACE or event.key == K_l:
m = my_tank.tank_fire()
m.good = True
TankMain.my_missile_list.append(m)
if event.type == KEYUP and my_tank:
if event.key == K_DOWN or K_UP or K_RIGHT or K_LEFT:
my_tank.stop = True
# 关闭游戏
def stopGame(self):
sys.exit()
# 设置窗口
def set_title(self):
pass
def write_text(self):
font = pygame.font.SysFont("simsunnsimsun", 20)
text_sf = font.render("敌方坦克数量:%d"%len(TankMain.enemy_list_tank), True, (255, 0, 0))
text_sf1 = font.render("发射子弹数量:%d" % len(TankMain.my_missile_list), True, (255, 0, 0))
return text_sf, text_sf1
class BaseItem(pygame.sprite.Sprite):
def __init__(self, screem):
pygame.sprite.Sprite.__init__(self)
self.screem = screem
def display(self):
if self.live:
self.image = self.images[self.direction]
self.screem.blit(self.image, self.rect)
class Tank(BaseItem):
width = 50
height = 50
def __init__(self, screem, left, top):
super().__init__(screem)
# self.screem = screem
self.direction = "U"
self.speed = 10 # 5移动速度
self.stop =False
self.images = {}
self.images["L"] = pygame.image.load("img/p1tankL.gif")
self.images["R"] = pygame.image.load("img/p1tankR.gif")
self.images["U"] = pygame.image.load("img/p1tankU.gif")
self.images["D"] = pygame.image.load("img/p1tankD.gif")
self.image = self.images[self.direction]
self.rect = self.image.get_rect()
self.rect.left = left
self.rect.top = top
self.live = True # 坦克是否消灭
self.oldtop = self.rect.top
self.oldleft = self.rect.left
def stay(self):
self.rect.top = self.oldtop
self.rect.left = self.oldleft
#
# def display(self):
# self.image = self.images[self.direction]
# self.screem.blit(self.image, self.rect)
def tank_move(self):
if not self.stop: # not??
self.oldtop = self.rect.top
self.oldleft = self.rect.left
if self.direction == "L":
if self.rect.left > 0: # 屏幕左边界
self.rect.left -= self.speed
else:
self.rect.left = 0
elif self.direction == "R":
if self.rect.right < TankMain.width:
self.rect.right += self.speed
else:
self.rect.right = TankMain.width
elif self.direction == "U":
if self.rect.top > 0:
self.rect.top -= self.speed
else:
self.rect.top = 0
elif self.direction == "D":
if self.rect.bottom < TankMain.height:
self.rect.bottom += self.speed
else:
self.rect.bottom = TankMain.height
def tank_fire(self):
m = Misssile(self.screem, self)
return m
# 我方坦克
class My_Tank(Tank):
def __init__(self, screem):
super().__init__( screem, 270, 540)
self.images["L"] = pygame.image.load("img/p2tankL.gif")
self.images["R"] = pygame.image.load("img/p2tankR.gif")
self.images["U"] = pygame.image.load("img/p2tankU.gif")
self.images["D"] = pygame.image.load("img/p2tankD.gif")
self.stop = True
self.live = True
self.speed = 20
def hit_enemy_missile(self):
hit_list = pygame.sprite.spritecollide(self, TankMain.enemy_missile_list, False)
for n in hit_list:
n.live = False
TankMain.enemy_missile_list.remove(n)
self.live = False
explode = Explode(self.screem, self.rect)
TankMain.explode_list.append(explode)
class Enemy_Tank(Tank):
def __init__(self, screem):
super().__init__(screem, randint(0, 2)*420, 0)
self.step = 6 # 某方向连续移动
self.stop = True
def get_random_direction(self):
r = randint(0, 4)
if r == 4:
self.stop = True
elif r == 0:
self.direction = "L"
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
My_tanks.zip (87个子文件)
My_tanks
img
born1.gif 264B
坦克
enemy3R.gif 4KB
enemy3L.gif 4KB
tugai.net.20101117235941.gif 2KB
tugai.net.20101117235357.gif 3KB
tugai.net.20101117235819.gif 2KB
tugai.net.20101118000029.gif 2KB
tugai.net.20101117235843.gif 2KB
tugai.net.20101117235303.gif 3KB
enemy3D.gif 4KB
tugai.net.20101118000048.gif 2KB
tugai.net.20101117235754.gif 2KB
enemy3U.gif 4KB
Thumbs.db 55KB
tugai.net.20101118000114.gif 2KB
tugai.net.20101117235923.gif 2KB
tugai.net.20101117235418.gif 3KB
tugai.net.20101117235441.gif 3KB
wall.gif 1KB
destory.gif 2KB
start.wav 863KB
add.wav 128KB
enemy3R.gif 4KB
enemy3L.gif 4KB
title.gif 38KB
blast7.gif 9KB
blast2.gif 2KB
born4.gif 417B
born2.gif 308B
bomb.gif 2KB
steel.gif 984B
water.gif 5KB
timer.gif 2KB
p2tankR.gif 3KB
hit.wav 23KB
walls.gif 4KB
enemy2L.gif 4KB
墙
wall.gif 2KB
tugai.net.20101117144551.gif 1KB
tugai.net.20101117145147.gif 2KB
walls.gif 4KB
Thumbs.db 17KB
tugai.net.20101117144625.gif 1KB
tugai.net.20101117134209.gif 1KB
enemy1U.gif 4KB
enemy2D.gif 4KB
enemymissile.gif 377B
enemy2R.gif 4KB
blast5.gif 6KB
enemy3D.gif 4KB
p1tankL.gif 4KB
enemy1D.gif 4KB
p2tankD.gif 3KB
mintank.gif 2KB
select.gif 8KB
enemy1L.gif 4KB
grass.png 6KB
enemy1R.gif 4KB
born3.gif 378B
blast3.gif 3KB
p1tankR.gif 4KB
selecttank.gif 2KB
enemy2U.gif 4KB
blast1.gif 744B
blast.wav 53KB
enemy3U.gif 4KB
Thumbs.db 135KB
star.gif 2KB
p1tankU.gif 3KB
steels.gif 2KB
over.gif 3KB
tankmissile.gif 188B
p1tankD.gif 3KB
blast8.gif 12KB
p2tankL.gif 3KB
blast4.gif 4KB
p2tankU.gif 3KB
fire.wav 68KB
blast6.gif 7KB
Main2.py 14KB
.idea
My_tanks.iml 464B
misc.xml 294B
modules.xml 275B
encodings.xml 138B
workspace.xml 19KB
Main.py 11KB
tests.py 30B
共 87 条
- 1
资源评论
qq_40817890
- 粉丝: 1
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功