Pygame实战之实现经典外星人游戏

作者:嗨!栗子同学 时间:2021-05-10 00:31:44 

前言

说说外星人那些事儿....

你以为的外星人......他们都是乘坐UFO来地球的,长的嗯哼可能比较有特色。也许长这样

Pygame实战之实现经典外星人游戏

害!其实可能也或许不长这样。

图片的话借鉴的大众认知的这一款。当然你们还可以自己来!下面我们来做一款简单的《外星人入侵》小游戏吧!

安装环境

下载python3,或如Anaconda3(64 bit),导入pygame游戏包。

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)
#略.....................................

其实还有几页的源码量,代码很多,需要的话直接找我会比较好~

效果展示:

Pygame实战之实现经典外星人游戏

来源:https://blog.csdn.net/xy258009/article/details/122559039

标签:Pygame,外星人,游戏
0
投稿

猜你喜欢

  • Go 值传递与引用传递的方法

    2023-06-25 03:11:11
  • 跨浏览器让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
  • 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
  • ASP编写计数器的优化方法

    2009-01-21 19:46:00
  • 利用global.asa计划执行程序

    2008-03-05 12:49:00
  • Python pyecharts案例超市4年数据可视化分析

    2021-04-09 21:10:29
  • Oracle如何直接运行OS命令(上)第1/2页

    2010-07-30 12:54:00
  • 如何导出python安装的所有模块名称和版本号到文件中

    2022-07-26 15:38:59
  • asp之家 网络编程 m.aspxhome.com