import pygame
from pygame.locals import *
import time
import random
class Base(object):
"""docstring for Base"""
def __init__(self,screen,x,y,image):
self.screen = screen
self.x = x
self.y = y
self.image =pygame.image.load(image) class Basefly(Base):
"""docstring for basefly"""
def __init__(self,screen,x,y,image):
Base.__init__(self,screen,x,y,image)
self.bulletList = []#cunfang zidan
def display(self):
self.screen.blit(self.image,(self.x,self.y))
for temp in self.bulletList:
temp.display()
temp.move()
if temp.judge():
self.bulletList.remove(temp)
class BaseBullet(Base):
"""zidan fulei"""
def __init__(self,screen,x,y,image):
Base.__init__(self,screen,x,y,image)
def display(self):
self.screen.blit(self.image,(self.x,self.y)) class Fly(Basefly):
def __init__(self,screen):
Basefly.__init__(self,screen,160,600,"/home/peng/桌面/image/fly.png")
def moveLeft(self):
self.x -= 7
def moveRight(self):
self.x += 7
def moveUp(self):
self.y -= 7
def moveDown(self):
self.y += 7
def fire(self):
self.bulletList.append(Bullet(self.screen,self.x,self.y))
class Enemy(Basefly):
def __init__(self,screen):
Basefly.__init__(self,screen,60,10,"/home/peng/桌面/image/enemy.PNG")
self.direction = "right"#敌机飞的方向
def move(self):
if self.direction == "right":
self.x += 3
elif self.direction == "left":
self.x -= 3
if self.x >= 465:
self.direction = "left"
elif self.x <= 3:
self.direction = "right" def fire(self):
if random.randint(1,100) == 27 or random.randint(1,100) == 56 or random.randint(1,100)==49:
self.bulletList.append(EnemyBullet(self.screen,self.x,self.y))
class Bullet(BaseBullet):
def __init__(self,screen,x,y):
BaseBullet.__init__(self,screen,x+50,y-50,"/home/peng/桌面/image/blue.jpg")
def move(self):
self.y -= 20
def judge(self):
if self.y < 0:
return True
else:
return False
class EnemyBullet(BaseBullet):
def __init__(self,screen,x,y):
BaseBullet.__init__(self,screen,x+20,y+45,"/home/peng/桌面/image/yellow.jpg")
def move(self):
self.y += 20
def judge(self):
if self.y > 700:
return True
else:
return False def keyController(fly):
for event in pygame.event.get():
if event.type == QUIT:
print("exit")
exit()
elif event.type == KEYDOWN:
if event.key == K_a or event.key == K_LEFT:
print("left")
fly.moveLeft()
elif event.key == K_d or event.key == K_RIGHT:
print("right")
fly.moveRight()
elif event.key == K_w or event.key == K_UP:
print("up")
fly.moveUp()
elif event.key == K_s or event.key == K_DOWN:
print("down")
fly.moveDown()
elif event.key == K_SPACE:
print("space")
fly.fire()
def main():
#创建一个窗口
screen = pygame.display.set_mode((480,750),0,32)
#创建图片用来填充窗口
background = pygame.image.load("/home/peng/桌面/image/back.png")
#创建飞机对象
fly = Fly(screen)
enemy = Enemy(screen)
while 1:
screen.blit(background,(0,0))
fly.display()
enemy.display()
#敌机移动
enemy.move()
enemy.fire()#敌机发射子弹
pygame.display.update()
keyController(fly)
time.sleep(0.01) if __name__ == '__main__':
main()

运行截图:

ps:如果有不清楚的,欢迎交流指正。

最新文章

  1. AngularJS 实现的输入自动完成补充功能
  2. ocp 1Z0-043 61-130题解析
  3. javascript看你能够做对几题
  4. 学习Swift--下标脚本
  5. No2_5.类的高级特性_Java学习笔记_抽象类和成员内部类
  6. java基础学习笔记
  7. 好的Qt学习资料
  8. 分析Android-Universal-Image-Loader的缓存处理机制
  9. Python之while循环
  10. MS SQL 数据库状态为SUSPECT(可疑)的处理方法
  11. 绕过D盾的php一句话
  12. 在websocket中怎么样注入service类
  13. Deep Belief Network简介——本质上是在做逐层无监督学习,每次学习一层网络结构再逐步加深网络
  14. python笔记05:条件、循环和其它语句
  15. [图解tensorflow源码] Graph 图模块 (UML视图)
  16. STL标准库-hash
  17. react中map循环中key取值问题
  18. [CSS3] 边栏导航动画
  19. Java接受键盘输入
  20. R语言的if-else

热门文章

  1. mapboxgl 互联网地图纠偏插件(一)
  2. 痞子衡嵌入式:Keil在线调试时设不同复位类型可能会导致i.MXRT下调试现象不一致(J-Link/DAPLink)
  3. 十七、.net core(.NET 6)搭建基于Quartz组件的定时调度任务
  4. 【图论】用线段树写Dijikstra!!
  5. 【dp】10-15题解 snake vs block
  6. Go语言十六进制转十进制
  7. 33、awk命令详解
  8. Python管道进行数据的吞吐处理
  9. Java:Java中static关键字作用
  10. [小技巧] Windows7 半角全角快捷键 修改方法