#coding:utf-8
import os
import os.path
import pygame
import time
import sys
import random
from pygame.locals import *
class MyFeiji(object):
x = 0
y = 0
movex = 0
movey = 0
live = 1
def __init__(self,x,y):
self.x = x
self.y = y
class MyZidan(object):
x = 0
y = 0
live = 0
movey = -6
def __init__(self,x,y):
self.x = x
self.y = y
class EnemyFeiji(object):
x = 0
y = 0
live = 0
movey = 3
def __init__(self,x,y):
self.x = x
self.y = y
if __name__ == '__main__':
pygame.init()
myscore = 0
screen = pygame.display.set_mode((500,600))
pygame.font.init()
font = pygame.font.Font('C:\Windows\Fonts\Calibri.TTF',60)
font_score = pygame.font.Font('C:\Windows\Fonts\Calibri.TTF',30)
bg1 = pygame.image.load('xingkong.png')
bg2 = pygame.image.load('xingkong.png')
bgy = 0
feiji = pygame.image.load('feiji.png')
diji_1 = pygame.image.load('diji_1_1.png')
zidan = pygame.image.load('zidan1.png')
myfeiji = MyFeiji(200,500)
speed_myfeiji = 6
myzidan = []
count_zidan = 20
add_zidan = 0 #zidan状态
plus_zidan = 0
count_diji = 10
dijiarray = []
createEnemy = 200 #创建时间
nowEnemy = 0
for i in range(count_zidan):
myzidan.append(MyZidan(0,0))
for i in range(count_diji):
dijiarray.append(EnemyFeiji(0,0))
while True:
#界面绘制图片
screen.blit(bg1, (0,bgy - 600))
screen.blit(bg2, (0,bgy))
nowEnemy = nowEnemy + 1
if createEnemy == 0:
createEnemy = random.randint(20,100)
if nowEnemy > createEnemy:
createEnemy = 0
nowEnemy = 0
for i in range(count_diji):
if dijiarray[i].live == 0:
dijiarray[i].live = 1
dijiarray[i].x = random.randint(0,450)
break
for i in range(count_diji):
if dijiarray[i].live == 1:
dijiarray[i].y = dijiarray[i].y + dijiarray[i].movey
if dijiarray[i].y > 600:
dijiarray[i].live = 0
dijiarray[i].y = 0
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == KEYDOWN:
if event.key == K_DOWN:
myfeiji.movey = speed_myfeiji
if event.key == K_UP:
myfeiji.movey = 0 - speed_myfeiji
if event.key == K_LEFT:
myfeiji.movex = 0 - speed_myfeiji
if event.key == K_RIGHT:
myfeiji.movex = speed_myfeiji
if event.key == K_SPACE:
add_zidan = 1
if event.key == K_F7:
myfeiji.live = 1
myfeiji.x = 200
myfeiji.y = 500
myscore = 0
for i in range(count_diji):
dijiarray[i].y = 0
dijiarray[i].live = 0
if event.type == KEYUP:
if event.key == K_DOWN:
myfeiji.movey = 0
if event.key == K_UP:
myfeiji.movey = 0
if event.key == K_LEFT:
myfeiji.movex = 0
if event.key == K_RIGHT:
myfeiji.movex = 0
if event.key == K_SPACE:
add_zidan = 0
if add_zidan == 1 and myfeiji.live == 1:
plus_zidan = plus_zidan + 1
if plus_zidan == 8:
plus_zidan = 0
for i in range(count_zidan):
if myzidan[i].live == 0:
myzidan[i].x = myfeiji.x + 30
myzidan[i].y = myfeiji.y
myzidan[i].live = 1
break
if bgy < 600:
bgy = bgy + 1
else:
bgy = 0
if myfeiji.movex > 0 and myfeiji.x <= 436 :
myfeiji.x = myfeiji.x + myfeiji.movex
if myfeiji.movex < 0 and myfeiji.x >= 0 :
myfeiji.x = myfeiji.x + myfeiji.movex
if myfeiji.movey > 0 and myfeiji.y <= 536 :
myfeiji.y = myfeiji.y + myfeiji.movey
if myfeiji.movey < 0 and myfeiji.y >= 0 :
myfeiji.y = myfeiji.y + myfeiji.movey
for i in range(count_zidan):
if myzidan[i].live == 1:
myzidan[i].y = myzidan[i].y + myzidan[i].movey
if myzidan[i].y < 0:
myzidan[i].live = 0
myzidan[i].y = 0
'''
check zidan diji
'''
for i in range(count_zidan):
for j in range(count_diji):
if myzidan[i].live == 1 and dijiarray[j].live == 1:
if myzidan[i].x >= dijiarray[j].x and myzidan[i].x <= dijiarray[j].x + 64 \
and myzidan[i].y >= dijiarray[j].y and myzidan[i].y <= dijiarray[j].y + 64:
myzidan[i].live = 0
dijiarray[j].live = 0
dijiarray[j].y = 0
myscore += 1
continue
if myzidan[i].x + 5 >= dijiarray[j].x and myzidan[i].x + 5 <= dijiarray[j].x + 64 \
and myzidan[i].y >= dijiarray[j].y and myzidan[i].y <= dijiarray[j].y + 64:
myzidan[i].live = 0
dijiarray[j].live = 0
dijiarray[j].y = 0
myscore += 1
continue
if myzidan[i].x >= dijiarray[j].x and myzidan[i].x <= dijiarray[j].x + 64 \
and myzidan[i].y + 10 >= dijiarray[j].y and myzidan[i].y + 10 <= dijiarray[j].y + 64:
myzidan[i].live = 0
dijiarray[j].live = 0
dijiarray[j].y = 0
myscore += 1
continue
if myzidan[i].x + 5 >= dijiarray[j].x and myzidan[i].x + 5 <= dijiarray[j].x + 64 \
and myzidan[i].y + 10 >= dijiarray[j].y and myzidan[i].y + 10 <= dijiarray[j].y + 64:
myzidan[i].live = 0
dijiarray[j].live = 0
dijiarray[j].y = 0
myscore += 1
continue
'''
check diji feiji
'''
for j in range(count_diji):
if dijiarray[j].live == 1:
if dijiarray[j].x >= myfeiji.x and dijiarray[j].x <= myfeiji.x + 64 \
and dijiarray[j].y >= myfeiji.y and dijiarray[j].y <= myfeiji.y + 64:
myfeiji.live = 0
break
if dijiarray[j].x + 64 >= myfeiji.x and dijiarray[j].x + 64 <= myfeiji.x + 64 \
and dijiarray[j].y >= myfeiji.y and dijiarray[j].y <= myfeiji.y + 64:
myfeiji.live = 0
break
if dijiarray[j].x >= myfeiji.x and dijiarray[j].x <= myfeiji.x + 64 \
and dijiarray[j].y + 64 >= myfeiji.y and dijiarray[j].y + 64 <= myfeiji.y + 64:
myfeiji.live = 0
break
if dijiarray[j].x + 64 >= myfeiji.x and dijiarray[j].x + 64 <= myfeiji.x + 64 \
and dijiarray[j].y + 64 >= myfeiji.y and dijiarray[j].y + 64 <= myfeiji.y + 64:
myfeiji.live = 0
break
for i in range(count_diji):
if dijiarray[i].live == 1:
screen.blit(diji_1, (dijiarray[i].x,dijiarray[i].y))
for i in range(count_zidan):
if myzidan[i].live == 1:
screen.blit(zidan, (myzidan[i].x,myzidan[i].y))
text_sf = font_score.render('score:'+str(myscore),True,pygame.Color(0,255,0),pygame.Color(0,0,130))
screen.blit(text_sf,(300,0))
if myfeiji.live == 1:
screen.blit(feiji, (myfeiji.x,myfeiji.y))
else:
text_sf = font.render('Game Over',True,pygame.Color(0,255,0),pygame.Color(0,0,130))
screen.blit(text_sf,(100,300))
#刷新窗口
pygame.display.update()
time.sleep(0.01)
pygame.quit()
pygame 简单的飞机大战
最新推荐文章于 2024-03-21 00:10:57 发布