基于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框架开发的,基于 ...
随机推荐
- 【题解】Luogu p3047 [USACO12FEB]附近的牛Nearby Cows 树型dp
题目描述 Farmer John has noticed that his cows often move between nearby fields. Taking this into accoun ...
- EEPROM工作原理透彻详解
原文链接点击这里 EEPROM(Electrically Erasable Programmable read only memory)即电可擦可编程只读存储器,是一种掉电后数据不丢失(不挥发)存储芯 ...
- VsCode中代码折叠快捷键
ctrl+K ctrl+[ 折叠本级 ctrl+K ctrl+] 取消折叠本级 ctrl+K ctrl+0 折叠全部 ctrl+K ctrl+J 取消折叠全部
- 【进阶之路】深入理解Java虚拟机的类加载机制(长文)
我们在参加面试的时候,经常被问到一些关于类加载机制的问题,也都会在面试之前准备的时候背好答案,但是我们是否有去深入了解什么是类加载机制呢?这段时间因为一些事情在家看了些书,这次就和大家分享一些关于Ja ...
- Java安全之Weblogic内存马
Java安全之Weblogic内存马 0x00 前言 发现网上大部分大部分weblogic工具都是基于RMI绑定实例回显,但这种方式有个弊端,在Weblogic JNDI树里面能将打入的RMI后门查看 ...
- 互联网巨头们的 SRE 运维实践「GitHub 热点速览 v.21.27」
作者:HelloGitHub-小鱼干 本周大热点无疑是前几天 GitHub 发布的 Copilot,帮你补全代码,给你的注释提出建议,预测你即将使用的代码组件-如此神奇的 AI 技术,恰巧本周微软也开 ...
- layui table 使用table放输入框时控制每列的宽度
<table class="layui-table" lay-filter="demo"> <colgroup> <%--设置每列 ...
- AvtiveMQ与SpringBoot结合
首先来了解下ActivieMQ的应用场景,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构是大型分布式系统不可缺少的中间件 ...
- Android系统编程入门系列之界面Activity绘制展示
上篇文章介绍了界面Activity的启动方式和生命周期,本篇将继续介绍在界面Activity中的内容是如何绘制展示给用户的. 在Android系统上运行新创建的界面Activtiy,给用户展示的是空白 ...
- PostgreSQL角色问题
角色 PostgreSQL使用角色的概念管理数据库访问权限. 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户. 角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限 ...