Pygame实战之实现经典外星人游戏
作者:嗨!栗子同学 时间:2021-05-10 00:31:44
前言
说说外星人那些事儿....
你以为的外星人......他们都是乘坐UFO来地球的,长的嗯哼可能比较有特色。也许长这样
害!其实可能也或许不长这样。
图片的话借鉴的大众认知的这一款。当然你们还可以自己来!下面我们来做一款简单的《外星人入侵》小游戏吧!
安装环境
下载python3,或如Anaconda3(64 bit),导入pygame游戏包。
主要代码
1.外星人设置,alien.py,代码:
import pygame
from pygame.sprite import Sprite
class Alien(Sprite):
"""表示单个外星人的类"""
def __init__(self,ai_settings,screen):
"""初始化外星人并设置其他位置"""
super(Alien,self).__init__()
self.screen = screen
self.ai_settings = ai_settings
#加载外星人图像,并设置其rect属性
self.image = pygame.image.load('images/alien.bmp')
self.rect = self.image.get_rect()
#每个外星人最初都在屏幕左上角附近
self.rect.x = self.rect.width
self.rect.y = self.rect.height
#存储外星人的准确位置
self.x = float(self.rect.x)
def blitme(self):
"""在指定位置绘制外星人"""
self.screen.blit(self.image,self.rect)
def check_edges(self):
"""如果外星人位于屏幕边缘,就返回True"""
screen_rect = self.screen.get_rect()
if self.rect.right >= screen_rect.right:
return True
elif self.rect.left <= 0:
return True
def update(self):
"""向右移动外星人"""
self.x += (self.ai_settings.alien_speed_factor * self.ai_settings.fleet_direction)
self.rect.x = self.x
2.游戏主程序,alien_invasion.py,代码:
import pygame
from settings import Settings
from game_stats import GameStats
from button import Button
from ship import Ship
from pygame.sprite import Group
import game_functions as gf
from scoreboard import Scoreboard
def run_game():
pygame.init() # 初始化背景设置
ai_settings = Settings() # 全局设置
screen = pygame.display.set_mode( # 创建screen显示窗口
(ai_settings.screen_width,ai_settings.screen_height)
)
pygame.display.set_caption('Alien Invasion') # 标题
#新建Play按钮
play_button = Button(ai_settings,screen,"Play")
#创建一个用于存储游戏统计信息的实例,并创建记分牌
stats = GameStats(ai_settings)
sb = Scoreboard(ai_settings, screen, stats)
# 创建飞船
ship = Ship(ai_settings,screen)
# 创建 * 编组
bullets = Group()
#创建一个外星人
aliens = Group()
#创建外星人群
gf.create_fleet(ai_settings,screen,ship,aliens)
# 开始游戏主循环
while True:
# 监视键盘和鼠标事件
gf.check_events(ai_settings,screen,stats,sb,play_button,ship,aliens,bullets)
if stats.game_active:
# 移动飞船
gf.update_ship(ship)
# 更新 * 位置
gf.update_bullets(ai_settings,screen,stats,sb,ship,aliens,bullets)
#更新外星人
gf.update_aliens(ai_settings,stats,screen,sb,ship,aliens,bullets)
# 更新屏幕
gf.update_screen(ai_settings,screen,stats,sb,ship,aliens,bullets,play_button)
run_game()
3.设置 * ,bullet.py,代码:
import pygame
from pygame.sprite import Sprite
import time
class Bullet(Sprite):
'''飞船 * 进行管理'''
def __init__(self,ai_settings,screen,ship):
super(Bullet,self).__init__()
self.screen = screen
# 创建 * 矩形初始位置(0,0,3,15)分别对应lef,top,宽,高
self.rect = pygame.Rect(0,0,
ai_settings.bullet_width, ai_settings.bullet_height)
self.rect.centerx = ship.rect.centerx # 设置中心点x轴坐标跟飞船一致
self.rect.top = ship.rect.top # 设置y轴坐标顶部跟飞船一致
# 设置成小数进行计算
self.top = float(self.rect.top)
self.color = ai_settings.bullet_color
self.speed_factor = ai_settings.bullet_speed_factor
def update(self):
self.top -=self.speed_factor
self.rect.top = self.top
print(self.rect.top)
def draw_bullet(self):
pygame.draw.rect(self.screen,self.color,self.rect)
#略.....................................
其实还有几页的源码量,代码很多,需要的话直接找我会比较好~
效果展示:
来源:https://blog.csdn.net/xy258009/article/details/122559039
标签:Pygame,外星人,游戏
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Go 值传递与引用传递的方法
2023-06-25 03:11:11
![](https://img.aspxhome.com/file/2023/3/89023_0s.png)
跨浏览器让javascript文件携带图片数据
2011-03-31 17:12:00
Python实现合并excel表格的方法分析
2022-04-24 21:30:22
ASP程序中调用函数Now()显示上午下午的问题
2009-08-27 13:09:00
selenium+python自动化测试之环境搭建
2022-05-15 13:51:32
![](https://img.aspxhome.com/file/2023/1/75901_0s.png)
python脚本后台执行方式
2021-02-12 20:57:58
python私有属性和方法实例分析
2023-11-21 06:16:13
关于ASP中的类class
2007-08-19 15:37:00
python网络编程学习笔记(二):socket建立网络客户端
2023-08-18 13:57:44
Cookies 欺骗漏洞的防范方法(vbs+js 实现)
2011-03-09 11:09:00
sqlserver bcp(数据导入导出工具)一般用法与命令详解
2012-07-11 15:56:39
Python中生成器和迭代器的区别详解
2022-12-04 02:32:08
SQL注入防御:用三种策略应对SQL注入攻击
2008-12-15 16:31:00
Go语言实现文件上传
2023-07-08 18:26:38
Python xlwt设置excel单元格字体及格式
2023-03-10 06:04:39
![](https://img.aspxhome.com/file/2023/1/70021_0s.png)
ASP编写计数器的优化方法
2009-01-21 19:46:00
利用global.asa计划执行程序
2008-03-05 12:49:00
Python pyecharts案例超市4年数据可视化分析
2021-04-09 21:10:29
![](https://img.aspxhome.com/file/2023/3/77643_0s.gif)
Oracle如何直接运行OS命令(上)第1/2页
2010-07-30 12:54:00
如何导出python安装的所有模块名称和版本号到文件中
2022-07-26 15:38:59
![](https://img.aspxhome.com/file/2023/9/88839_0s.png)