以前版本的微信小游戏有一个打飞机的游戏,学完python之后我试着写了下程序去基本实现打飞机的功能,下面是小游戏打飞机的python代码

注:python中部分代码转自crossin编程教室

import pygame

import random

from sys import exit #向sys模块借用个exit函数来退出程序

#定义一个敌机类

class Enemy:

def restar(self):

#重置敌机位置与速度

self.x=random.randint(100,600)

self.y=random.randint(-200,-80)

self.speed=random.random()+0.4

def __init__(self):

self.restar()

self.image=pygame.image.load("enermy.jpg")

def move(self):

if self.y < 800:

self.y+=self.speed #向下移动

else:

self.restar()

#定义一个bullet类,封装子弹相关的数据和方法

class Bullet:

def __init__(self):

self.x=0;

self.y=-1;

self.image=pygame.image.load("bulet.jpg")

self.active=False #默认不激活子弹

def move(self):

#激活状态下,向上移动

if self.active:

self.y-=0.8

#挡飞出屏幕,设为不激活

if self.y<0:

self.active=False

def restar(self):

#重置子弹位置子弹

mouseX,mouseY=pygame.mouse.get_pos()

self.x=mouseX-self.image.get_width()/2;

self.y=mouseY-self.image.get_height()/2;

self.active=True;

def checkhit(enemy,bullet):

#如果子弹在敌机的图片范围之内

if (bullet.x > enemy.x and bullet.x < enemy.x + enemy.image.get_width()) and (

bullet.y > enemy.y and bullet.y < enemy.y + enemy.image.get_height()

):

enemy.restar();

bullet.active=False

return True

return False

class Plane:

def restar(self):

self.x=200

self.y=600

def __init__(self):

self.restar()

self.image=pygame.image.load("plane.jpg")

def move(self):

x, y = pygame.mouse.get_pos(); # 跟随鼠标移动

x -= self.image.get_width() / 2;

y -= self.image.get_height() / 2;

self.x=x;

self.y=y

def checkcrash(enemy, plane):

if (plane.x + 0.7*plane.image.get_width() > enemy.x) and (

plane.x + 0.3*plane.image.get_width() < enemy.x + enemy.image.get_width()) and (

plane.y + 0.7*plane.image.get_height() > enemy.y) and (

plane.y + 0.3*plane.image.get_width() < enemy.y + enemy.image.get_height()

):

return True

return False

pygame.init()

screen=pygame.display.set_mode((1000,700),0,32) #创建一个窗口

pygame.display.set_caption("xwr!")#设置窗口标题

background=pygame.image.load("pygame.jpg") #加载并转换图像

plane=Plane()#加载飞机图像

bullets=[]#创建子弹的list

for i in range(5):

bullets.append(Bullet()) #向list添加5发子弹

count_b=len(bullets)#子弹总数

index_b=0 #即将激活的子弹序号

interval_b=0#发射子弹的间隔

enemies=[]

for e in range(5):

enemies.append(Enemy())

gameover = False

#分数

score = 0

#用以显示文字的font变量

font = pygame.font.Font(None, 32)

while True: #游戏主循环函数

for event in pygame.event.get():

if event.type==pygame.QUIT: #接收到退出事件后退出程序

pygame.quit()

exit()

if gameover and event.type==pygame.MOUSEBUTTONUP:

plane.restar()

for e in enemies:

e.restar()

for b in bullets:

b.restar()

score=0;

gameover=False

screen.blit(background, (0, 0)) # 将背景图画上去

if not gameover:

interval_b-=1 #发射间隔递减

if interval_b<0: #激活一发子弹

bullets[index_b].restar()

interval_b=80 #重置间隔时间

index_b=(index_b+1)%count_b#子弹序号周期性递增

for b in bullets: #处于激活状态的子弹,移动位置并绘制

if b.active:

for e in enemies:

if checkhit(e,b):

score+=100

b.move()

screen.blit(b.image,(b.x,b.y))

for e in enemies:

if checkcrash(e, plane):

gameover = True

e.move()

screen.blit(e.image,(e.x,e.y))

plane.move()

screen.blit(plane.image, (plane.x, plane.y))

# 在屏幕左上角显示分数

text = font.render("Socre: %d" % score, 1, (0, 0, 0))

screen.blit(text, (0, 0))

else:

# 在屏幕中央显示分数

text = font.render("Socre: %d" % score, 1, (0, 0, 0))

screen.blit(text, (190, 400))

pass

pygame.display.update() #刷新一下界面

python小游戏代码大全打枪-python实现微信小游戏打飞机代码相关推荐

  1. Python爬虫系列之爬取某优选微信小程序全国店铺商品数据

    Python爬虫系列之爬取某优选微信小程序全国商品数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅 ...

  2. 微信小程序 等待几秒、_微信小程序—setTimeout定时器的坑

    背景 实验室需要将项目的app搬到微信的小程序上,终于知道为什么程序员是手艺人了,只要有需求,就要想方设法去填充这种需求,去年是小程序的元年了可以说,去年冬天一个叫跳一跳的小程序游戏出现在我的微信中, ...

  3. 小程序开发运营必看:微信小程序平台运营规范

    一.原则及相关说明 ​ 微信最核心的价值,就是连接--提供一对一.一对多和多对多的连接方式,从而实现人与人.人与智能终端.人与社交化娱乐.人与硬件设备的连接,同时连接服务.资讯.商业. ​ 微信团队一 ...

  4. 微信小程序 等待几秒、_微信小程序—setTimeOut定时器的问题及解决

    背景 实验室需要将项目的app搬到微信的小程序上,终于知道为什么程序员是手艺人了,只要有需求,就要想方设法去填充这种需求,去年是小程序的元年了可以说,去年冬天一个叫跳一跳的小程序游戏出现在我的微信中, ...

  5. 黯然微信小程序杂记(三):微信小程序实现倒计时功能 附讲解教学 附源码

    黯然微信小程序杂记(三):微信小程序实现倒计时功能 附超详细注释 附源码 一.功能描述 二.界面展示 三.test.wxml代码 四.test.js代码(注释很详细 很易懂) CSDN私信我,有关微信 ...

  6. 微信小程序开发与应用 第一章 微信小程序的基本知识1

    1-1 第一章 第一节 微信小程序的基本知识1 文章目录 前言 一.注册一个小程序账号 二.第一个微信小程序"Hello Wechat!" (一)准备工作 (二)页面介绍 (三)代 ...

  7. 微信小程序开发系列教程三:微信小程序的调试方法

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 这个教程的前两篇文章,介绍了如何用下图所示的微信开发者工具自动生成一个Hel ...

  8. 微信小程序的一些基本知识,微信小程序开发

    什么是**微信小程序** 微信小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.也体现了"用完即走"的 ...

  9. 基于微信小程序云开发的投票小程序源码,图文投票微信小程序源码

    功能介绍 投票活动十分火,商家,企业,机构偶尔都会来一场投票活动评选,本小程序支持图文投票,简单方便.随时随地完成投票,可以方便设定投票模式(按天按全程,投票数限定). 本代码前后端完整代码包投票列表 ...

最新文章

  1. 【FFmpeg】截至ffmpeg4.2不推荐(Deprecate)继续使用的接口,以及代替它的接口汇总
  2. 谷歌员工论坛自述引程序员羡慕,只招募最优秀的人,薪资福利超棒
  3. 深度操作系统 15 Beta——每一处都在“靓”变
  4. 关于LCD的分屏与切屏 Tearing effect
  5. docker-elk装IK自定义分词库
  6. webpack 4.14.0 版本太高,无法执行相关指令,(将webpack高版本切换到低版本)--直接覆盖
  7. 深化对KMP算法的理解
  8. 判断客户端是电脑还是手机
  9. Flume 1.7 源码分析(五)从Channel获取数据写入Sink
  10. 玩转Linux必备知识(三)
  11. java es 搜索_使用elasticsearch从多个列表中搜索
  12. 电子科技大学计算机学院王刚,电子科技大学-团体程序设计天梯赛.PDF
  13. Linux系统文件的隐藏属性
  14. 为什么技术管理者要懂一点产品思维?向苹果,爱马仕学习产品底层素养
  15. Python实现基于ClipCap的看图说话Image Caption模型
  16. 神经网络模型(.pth)能做些什么(使用心得)
  17. Godaddy Web Hosting http 重定向至 https协议
  18. python爬虫系列(一):爬虫简介
  19. 如何让电脑同时连接内外网?
  20. 看图学习VMWare以及常见问题答疑(转)

热门文章

  1. java事务抛异常_java中抛异常后如何使事务回滚
  2. Activity中AndroidMainfest启动模式
  3. Linux多线程编程-线程函数返回值(返回简单数据类型)
  4. Linux改完ip没有inet,linux中eth0中没有inet addr
  5. VMware安装windows server 2008 r2详细教程
  6. 能源结构优化与低碳化发展:低碳化指数-全国分地区能源消费结构
  7. 【运算放大器】反相放大电路仿真应用
  8. NGUI制作字体的三种方法
  9. LTE(4G) - NR(5G) NSA Transfer (RRC UL Information transfer)
  10. python-markdown语法