外星人入侵(二)

news/2024/12/5 8:23:59/

飞船的移动

思路:当按下特定的方向键后,飞船向指定的方向移动,可以允许不断移动,为实现不断移动,需要设置一个移动标志,默认为False,当按下时,则为True,实现其方向键的移动,除此之外,还要限制飞船的活动范围,防止飞出边界,为此需要更改代码

ship.py完整代码如下

import pygameclass Ship():def __init__(self,ai,screen):"""初始化飞船并设置其初始位置"""self.screen=screenself.ai=ai#加载飞船图像self.image=pygame.image.load('E:\外星人入侵\images\ship.bmp')#获取飞船图像的长宽尺寸self.rect=self.image.get_rect()#获取游戏屏幕的尺寸self.screen_rect=screen.get_rect()#将每艘新飞船放在屏幕底部的中央#飞船的x坐标=屏幕的x中间位置坐标self.rect.centerx=self.screen_rect.centerx#飞船的y坐标=屏幕的底部Y值self.rect.bottom=self.screen_rect.bottom#在飞船的属性center中存储最小数值# self.center=float(0)#飞船移动标志self.moving_right=Falseself.moving_left =Falseself.moving_down = Falseself.moving_up = Falsedef update(self):"""根据移动标志调整飞船的位置"""#更新飞船的center值而不是rectif self.moving_right and self.rect.right<self.screen_rect.right:self.rect.centerx+=1#self.center+=self.ai.speedif self.moving_left and self.rect.left>0:self.rect.centerx-=1if self.moving_up and self.rect.top>self.screen_rect.top:self.rect.centery -= 1# self.center+=self.ai.speedif self.moving_down and self.rect.bottom<self.screen_rect.bottom:self.rect.centery += 1#self.center -= self.ai.speed#根据self.center更新rect对象#self.rect.centerx+=self.centerdef blitme(self):"""指定位置绘制飞船"""#blit(图像,图像绘制的位置坐标)self.screen.blit(self.image,self.rect)

添加update()函数,根据上下左右移动标志,进行飞船的上下左右移动

game_functions.py完整代码如下

import sys
import pygamedef check_keydown_evnet(event,ship):if event.key == pygame.K_RIGHT:# 向右移动飞船ship.moving_right = Trueelif event.key == pygame.K_LEFT:# 向右移动飞船ship.moving_left = Trueelif event.key==pygame.K_UP:ship.moving_up = Trueelif event.key==pygame.K_DOWN:ship.moving_down = Truedef check_keyup_event(event,ship):if event.key == pygame.K_RIGHT:# 向右移动飞船ship.moving_right = Falseelif event.key == pygame.K_LEFT:# 向右移动飞船ship.moving_left = Falseelif event.key==pygame.K_UP:ship.moving_up = Falseelif event.key==pygame.K_DOWN:ship.moving_down = Falsedef check_evens(ship):"""响应按键和鼠标事件"""for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()#检测是否有按键按下elif event.type==pygame.KEYDOWN:check_keydown_evnet(event, ship)elif event.type==pygame.KEYUP:check_keyup_event(event, ship)def update_screen(ai_settings,screen,ship):"""每次更新屏幕上的图像,并切换到新屏幕"""# 背景填充颜色screen.fill(ai_settings.bg_color)# 将飞船绘制到屏幕上ship.blitme()# 让最近绘制的屏幕可见,否则是看不见的pygame.display.flip()

进行相应的按键事件处理,添加判断按键是否按下与松开的相关处理事件,从而实现飞船的上下左右移动

alien_invasion.py完整代码如下

import sysimport pygame
#导入设置类
from settings import Settings
from ship import Ship
import game_functions as gfdef run_game():#初始化游戏并创建一个屏幕对象pygame.init()#实例化settings对象ai=Settings()#创建游戏窗口大小screen=pygame.display.set_mode((ai.screen_width,ai.screen_height))#创建游戏标题pygame.display.set_caption("外星人大战")#实例化飞船对象ship,传入屏幕实参ship=Ship(ai,screen)#开始游戏的主循环while True:#监视键盘和鼠标的事件gf.check_evens(ship)ship.update()gf.update_screen(ai,screen,ship)
if __name__ == '__main__':run_game()

最后实现的效果图如下
这里写图片描述

总结

实现飞船的上下左右移动,以及边界限制


http://www.ppmy.cn/news/689077.html

相关文章

外星人移动

alien_invasion.py import sysimport pygamefrom pygame.sprite import Group from settings import Settings from ship import Ship from alien import Alien import game_functions as gfdef run_game():#初始化游戏并创建一个屏幕对象pygame.init()ai_settings Settings(…

python 外星人游戏怎么打开_Python外星人入侵游戏开发—创建游戏窗口

第1、2行代码:导入了模块sys 和pygame 。模块pygame 包含开发游戏所需的功能。玩家退出时,我们将使用模块sys 来退出游戏。 第3行至19行,是函数run_game()的实现。 第5行,代码行pygame.init() 初始化背景设置,让Pygame能够正确地工作。 第6行,我们调用pygame.display.…

怎么运行python外星人入侵_Python入门项目:外星人入侵

前言 作为一个编程小白选手&#xff0c;经过一段时间的基础语法学习&#xff0c;终于迎来了首个项目学习&#xff0c;从一步步的模仿到理解到每个步骤的思路想法&#xff0c;每个类之间的联系与构造&#xff0c;还有些编程中的一些小细节&#xff0c;如何养成一个编程的好习惯…

python外星人入侵游戏图片_Python外星人入侵游戏编程完整版

PYTHON游戏编程外星人入侵的完整实现思路&#xff0c;具体内容如下 准备工作&#xff1a;下载python&#xff0c;比如Anaconda3&#xff08;64 bit&#xff09;&#xff0c;导入pygame游戏包 1.外星人设置&#xff0c;alien.py&#xff0c;代码&#xff1a; import pygame f…

python外星人实验报告_Python 项目实践一(外星人入侵)第一篇

python断断续续的学了一段实践,基础课程终于看完了,现在跟着做三个小项目,第一个是外星人入侵的小游戏: 一 Pygame pygame 是一组功能强大而有趣的模块,可用于管理图形,动画乃至声音,让你轻松的开发出想要的游戏。 二 安装Pygame 查找与你python匹配的安装程序,找不到可…

python实现外星人入侵——3.事件分析

前言 讲解完了所有的类&#xff0c;接下来就应该讲一下事件了。 在游戏的过程中&#xff0c;最重要的其实应当是在事件发生后进行反应并重新渲染。 先贴game_function的代码&#xff1a; import sys import pygame from bullet import bullet from alien import Alien from …

键盘定位板图纸_Alienware AW510K RGB矮轴机械键盘评测

包装 Alienware AW510K RGB矮轴机械键盘和之前我们评测过的AW610M双模游戏鼠标和AW510H 7.1游戏耳机都是Alienware标准的“西装套”组合&#xff0c;设计语言和配色风格都非常相似。这款键盘也是Alienware目前旗舰级别的机械键盘&#xff0c;用的是cherry mx rbg 矮红轴方案&am…

python外星人颜色答案_Python-外星人

此项目在学习Python的过程中&#xff0c;对照着书本所写&#xff0c;已成功运行。 所用的编辑器为Spyder&#xff0c;安装插件Pygame. 外星人及飞船图片下载链接 以下为小部分代码&#xff0c;完整版已上传资源。 主程序&#xff1a;alien_invasion.py import sys import pyg…