python实现微信打飞机游戏

环境:Ubuntu 16.04 LTS

Python 2.7.11 +  Pygame + Pycharm

代码:

  1 # -*- coding: UTF-8 -*-
  2 import pygame, random
  3 from sys import exit
  4
  5
  6 class Plane:
  7     def restart(self):
  8         self.x = 200
  9         self.y = 600
 10
 11     def __init__(self):
 12         self.restart()
 13         self.image = pygame.image.load(‘plane.png‘).convert_alpha()
 14
 15     def move(self):
 16         x, y = pygame.mouse.get_pos()
 17         x -= self.image.get_width() / 2
 18         y -= self.image.get_height() / 2
 19         self.x = x
 20         self.y = y
 21
 22
 23 class Enemy:
 24     def start(self):
 25         self.speed = random.random() + 0.1
 26         self.x = random.randint(0, 450)
 27         self.y = 0
 28
 29     def __init__(self):
 30         self.start()
 31         self.image = pygame.image.load(‘enemy.png‘).convert_alpha()
 32
 33     def move(self):
 34         if self.y < 800:
 35             self.y += self.speed
 36         if self.y > 800:
 37             self.start()
 38
 39
 40 class Bullet:
 41     def __init__(self):
 42         self.x = 0
 43         self.y = 0
 44         self.image = pygame.image.load(‘bullet.png‘).convert_alpha()
 45         self.active = False
 46
 47     def move(self):
 48         if self.active:
 49             self.y -= 3
 50         if self.y < 0:
 51             self.active = False
 52
 53     def start(self):
 54         mouseX, mouseY = pygame.mouse.get_pos()
 55         self.x = mouseX - self.image.get_width() / 2
 56         self.y = mouseY - self.image.get_height() / 2
 57         self.active = True
 58
 59
 60 def Shoot(bullet, enemy):
 61     if (bullet.x > enemy.x and bullet.x < enemy.x + enemy.image.get_width()) and bullet.y > enemy.y and (
 62                 bullet.y < enemy.y + enemy.image.get_height()):
 63         bullet.active = False
 64         enemy.start()
 65         return True
 66     else:
 67         return False
 68
 69
 70 def Crash(plane, enemy):
 71     if (plane.x + 0.7 * plane.image.get_width() > enemy.x) and (
 72                     plane.x + 0.3 * plane.image.get_width() < enemy.x + enemy.image.get_width()) and (
 73                     plane.y + 0.7 * plane.image.get_height() > enemy.y) and (
 74                     plane.y + 0.3 * plane.image.get_height() < enemy.y + enemy.image.get_height()):
 75         return True
 76     else:
 77         return False
 78
 79
 80 pygame.init()
 81 screen = pygame.display.set_mode((450, 800), 0, 32)
 82 pygame.display.set_caption(‘World of plane craft‘)
 83 bg = pygame.image.load(‘bg.jpg‘).convert_alpha()
 86 bullet = Bullet()
 87 bullets = []
 88 for i in range(5):
 89     bullets.append(bullet)
 90 count_b = len(bullets)
 91 index_b = 0
 92 interval_b = 0
 93
 94 enemy = Enemy()
 95 enemys = []
 96 for i in range(5):
 97     enemys.append(enemy)
 98
 99 plane = Plane()
100 gameover = False
101 score = 0
102 font = pygame.font.Font(None, 32)
103 while True:
104     for event in pygame.event.get():
105         if event.type == pygame.QUIT:
106             pygame.quit()
107             exit()
108         if gameover and event.type == pygame.MOUSEBUTTONUP:
109             plane.restart()
110             for e in enemys:
111                 e.start()
112             for b in bullets:
113                 b.active = False
114             score = 0
115             gameover = False
116     screen.blit(bg, (0, 0))
117     if not gameover:
118         interval_b -= 1
119         if interval_b < 0:
120             bullets[index_b].start()
121             interval_b = 100
122             index_b = (index_b + 1) % count_b
123         for b in bullets:
124             if b.active:
125                 for e in enemys:
126                     if Shoot(b, e):
127                         score += 100
128                 b.move()
129                 screen.blit(b.image, (b.x, b.y))
130
131         for e in enemys:
132             if Crash(plane, e):
133                 gameover = True
134             e.move()
135             screen.blit(e.image, (e.x, e.y))
136
137         plane.move()
138         screen.blit(plane.image, (plane.x, plane.y))
139         text = font.render("Socre: %d" % score, 1, (0, 0, 0))
140         screen.blit(text, (0, 0))
141     else:
142         text = font.render("Socre : %d" % score, 1, (0, 0, 0))
143         screen.blit(text, (150, 300))
144         text = font.render("Click mouse and restart", 1, (0, 0, 0))
145         screen.blit(text, (100, 330))
146     pygame.display.update()

运行所需图片:

时间: 2024-10-26 07:57:01

python实现微信打飞机游戏的相关文章

pygame开发PC端微信打飞机游戏

pygame开发PC端微信打飞机游戏 一.项目简介 1. 介绍 本项目类似曾经火爆的微信打飞机游戏.游戏将使用Python语言开发,主要用到pygame的API.游戏最终将会以python源文件game.py形式完成,只需要运行python game.py就可以进入游戏. 游戏最终效果截图如下: 2. 知识点 本实验中将介绍在Linux桌面环境下使用Python及pygame快速开发小游戏的方式.可以通过这个游戏入门pygame游戏开发. 3. 参考文档 代码参考 Kill-Console写的P

使用swift写sprite Kit的模仿微信打飞机游戏

通过写这个东西来学习swift和sprite Kit,参考自https://github.com/croath/PlaneWarOSX,联系了原作者,他也表示感兴趣. 传送门:https://github.com/ljlin/PlaneWarSwift 使用swift写sprite Kit的模仿微信打飞机游戏,布布扣,bubuko.com

Python编写微信打飞机小游戏(一)

最近开始学习Python语言,发现Python有一个神奇的Pygame模块,在编写小游戏时显得非常方便,于是参照教学视频编写了一个微信打飞机的小游戏,网上有很多相关的博客,但都不是很详细,大都是直接贴代码,于是决定沉下心来把编写程序的过程记录下来,与大家分享. 首先声明一点,这篇博客完全参照了小甲鱼的<零基础入门学习Python>教学视频,为了尊重原创,特将原作者的视频地址公布如下:<零基础入门学习Python> Python编译器和Pygame模块的安装网上的教程很多,这里不再赘

Python编写微信打飞机小游戏(四)

之前的工作已经基本上将我方飞机的图形显示工作做的差不多了,这篇博客中我们将开始添加敌方飞机——小型敌机.中型敌机(直升机)和大型敌机(坦克).新建一个enemy.py文件,导入pygame和random模块,开始编写吧(还是要注意文件编码问题,以后就不再啰嗦了). 敌方飞机类与我方飞机模块有一定的相似性,但不会左右移动,不会发射子弹等等.小型敌机是敌方飞机中最基本的类型,一击毙命,没有血量.没有出场音效.中型敌机有一定血量,损毁时附带特殊音效.大型敌机血量最多,出场和损毁时都有特殊音效,游戏中中

Python编写微信打飞机小游戏(八)

现在飞机已经能够带着血条突突突飞下来让玩家虐,于是我们给用户一点打飞机的成就感——计分系统以及难度递增机制. 1.计分系统 首先,我们在main()函数中添加全局变量(score)并初始化为零用以统计当前用户的打飞机得分: score = 0 # 统计用户得分 接下来只需要在敌机销毁时对score进行累加就可以了,我们在这里先给敌机标个价:小型敌机一架值500分,中型敌机一架值2000分,大型敌机一架值6000分,然后在敌机损毁时根据敌机类型选择加多少分,对于小型敌机: for each in

Python编写微信打飞机小游戏(三)

通过之前的任务,我们已经能够实现小飞机在屏幕上自由移动了,这次博客的任务是是的我们的小飞机看起来更有灵性——尾部喷气特效的绘制. 1.帧率 说道帧率,玩游戏的人可能并不陌生.如果你是一个lol的玩家,那你肯定最关心两件事,一是帧率(FPS),二是延迟.延迟取决于网络性能,而帧率则取决于电脑的硬件配置,自然是帧率越高游戏画面就越流畅.帧率,简单老理解就是游戏在一秒钟进行多少次画面刷新.Pygame支持的帧率大约是从30到120,为了避免游戏程序因为电脑性能的差异出现太大差别,我们在此为程序指定一个

Python编写微信打飞机小游戏(十一)

在这篇博文中,我们准备为打飞机小游戏添加一个暂停的功能,即用户在游戏过程中随时可以通过单击屏幕右上方的一个暂停按钮来暂停和恢复游戏.这个功能看似比较简单,但其中涉及了鼠标操作.图片切换.代码结构的重置等等,接下来我们一一进行介绍. 1.加载暂停按钮图标 在image文件夹下一共有四张暂停按钮的图片,分别为深色和浅色两组,首先在main()函数中加载相关图片资源并初始化暂停/开始标志位: paused = False # 标志是否暂停游戏 pause_nor_image = pygame.imag

Python编写微信打飞机小游戏(七)

这边博客我们为大型敌机和中型敌机设置血量并以血槽的形式显示出来,同时解决之前遇到的声道阻塞的BUG(声道阻塞的问题详见之前的博文). 1.为敌机添加表示血量的成员变量 所谓敌机血量,就是指敌机在挂掉之前能够挨几发子弹,这是敌机对象的一个成员属性,因此我们在中型敌机(MidEnemy)和大型敌机(BigEnemy)中添加energy成员变量: class MidEnemy(pygame.sprite.Sprite): energy = 5 def __init__(self, bg_size):

python pygame模块 打飞机游戏

settings.py用于设置屏幕的基本设置 # -*- coding: gbk -*- __author__ = 'HZQ' import pygame class Settings(): ''' 存储所有设置 ''' def __init__(self): #屏幕大小设置 self.screen_width = 600 self.screen_height = 400 #屏幕背景 self.pwd='E:\\Python35\\images\\bg.jpg' #飞船速度设置 self.shi