基于pygame框架的打飞机小游戏
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:如果有不清楚的,欢迎交流指正。
基于pygame框架的打飞机小游戏的更多相关文章
- 原生javascript开发仿微信打飞机小游戏
今天闲来无事,于是就打算教一个初学javascript的女童鞋写点东西,因此为了兼顾趣味性与简易程度,果断想到了微信的打飞机小游戏.. 本来想用html5做的,但是毕竟人家才初学,连jquery都还不 ...
- 基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(中)
接<基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)> 三.代码分析 1.界面初始化 bool PlaneWarGame::init() { bool bRet = fals ...
- [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏
前言 这款安卓小游戏是基于SurfaceView的飞行射击类游戏,采用Java来写,没有采用游戏引擎,注释详细,条理比较清晰,适合初学者了解游戏状态转化自动机和一些继承与封装的技巧. 效果展示 ...
- 【python】10分钟教你用Python做个打飞机小游戏超详细教程
更多精彩尽在微信公众号[程序猿声] 我知道你们一定想先看效果如何 00 目录 整体框架 开始之前-精灵类Sprite 子弹类class Bullet 玩家飞机类class Player 敌机类clas ...
- [SpriteKit] 系统框架中Cocos2d-x制作小游戏ZombieConga
概述 使用SpriteKit实现一个简单的游戏, 通过一个游戏来进行SpriteKit的入门, 熟练2D游戏的API, 也可以更好的结合在iOS应用中. 详细 代码下载:http://www.demo ...
- Java打飞机小游戏(附完整源码)
写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐.代码写的很 ...
- 基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(下)
在飞机大战游戏开发中遇到的问题和解决方法: 1.在添加菜单时,我要添加一个有背景的菜单,需要在菜单pMenu中添加一个图片精灵,结果编译过了但是运行出错,如下图: 查了很多资料,调试了很长时间,整个人 ...
- 基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)
最近接触过几个版本的cocos2dx,决定每个大变动的版本都尝试一下.本实例模仿微信5.0版本中的飞机大战游戏,如图: 一.工具 1.素材:飞机大战的素材(图片.声音等)来自于网络 2.引擎:coco ...
- 基于NopCommerce框架开发的微信小程序UrShop
Urshop小程序商城 介绍 UrShop小程序商城 2.0发布啦,发布地址https://gitee.com/urselect/urshop UrShop 根据NopCommerce框架开发的,基于 ...
随机推荐
- 【C++】共用体\联合体(union)
共用体的用法与结构体差不多,只不过将关键字由struct变成了union.共用体使不同的类型变量存放到同一段内存单元中,所以共用体在同一时刻只能存储一个数据成员的值,共用体的大小等于最大成员的大小(结 ...
- 网络游戏逆向分析-3-通过发包函数找功能call
网络游戏逆向分析-3-通过发包函数找功能call 网络游戏和单机游戏的分析有相似点,但是区别还是很大的. 网络游戏和单机游戏的区别: 网络游戏是需要和服务器进行交互的,网游中的所有功能几乎都会先发送封 ...
- [Azure DevOps] 编译时自动修改版本号
1. 需求 在使用 Pipeline 自动化 CI/CD 流程的过程中,我还还需要自动修改程序集的版本号.这个功能 EdiWang 和LeoLaw 都写文章讲解过做法.不过我的项目基本都是 .Net ...
- redis cluster如何支持pipeline
当我们要操作一批key时,可以通过 redis pipline 再执行完后一次性读取所有结果来较少网络传输的消耗: 很明显,这有个限制条件 => 这批key的执行必须在同一个连接上 当部署的re ...
- 使用axios模拟表单提交
1.需求背景 最近在实验室写一个Spring前后端分离的项目,项目中使用Spring Security组件实现系统的认证和授权,当Security的认证模式设置为FormLogin时(如下代码),前端 ...
- 【Azure 事件中心】在Service Bus Explorer工具种查看到EventHub数据在分区中的各种属性问题
问题描述 通过Service Bus Explorer工具,查看到Event Hub的属性值,从而产生的问题及讨论: Size in Bytes: 这个是表示当前分区可以存储的最大字节数吗? La ...
- excel打印出现多余空白页
问题: 解决方法一:设置打印区域 步骤:选择需要打印的内容--页面布局--打印区域--设置打印区域即可 解决方法二:删除多余的打印空白页 步骤:视图--分页预览--选中多余的空白页删除即可
- Jenkins CI&CD 自动化发布项目实战(上篇)
Jenkins CI&CD 自动化发布项目实战(上篇) 作者 刘畅 时间 2020-11-28 实验环境 centos7.5 主机名 ip 服务配置 软件 gitlab 172.16.1.71 ...
- HDU 4821 2013长春现场赛hash
题意: 一个字符串S 问其中有几个子串能满足以下条件: 1.长度为M*L 2.可以被分成M个L长的小串 每个串都不一样 分析: hash方法,一个种子base,打表出nbase[i]表示base的 ...
- JAVA 中的权限访问修饰符(public,protected,default,private )
JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...