网络编程
位置:首页>> 网络编程>> Python编程>> Pygame实战之实现经典外星人游戏

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

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

标签:Pygame,外星人,游戏

前言

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

你以为的外星人......他们都是乘坐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

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com