浅谈pygame编写外星人入侵游戏第一步(屏幕上绘制飞机)......


本人小白 刚开始学习python半月,到目前将python基础语法跑了一遍,不算透彻,只是有一些映像......

于是学着做外星人入侵游戏,想从项目中深度学习,直接上目前的效果图:

----------------------------------------到目前实现以下图片效果------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------------

实现以上效果用了一下代码:

import pygame
import sys
pygame.init()
screen=pygame.display.set_mode((400,400))
pygame.display.set_caption("测试窗口打开")
bg_color=(0,255,255)

while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
else:
image=pygame.image.load("images/ship.bmp")

hero_rect=image.get_rect()
screen_rect=screen.get_rect()
hero_rect.centerx =screen_rect.centerx
hero_rect.bottom=screen_rect.bottom
screen.fill(bg_color)
screen.blit(image,hero_rect)
pygame.display.flip(pygame.init()

--------------------------------------------------------------------------------------------------------------------------------
初步学习用pygame 为了直接出效果没有将代码分开写直接写在一个模块中 在此过程中本人对rect的用法相当迷惑,不停的在网上查相关资料,
对pygame编写外星人入侵游戏的第一步基本语法才基本明白:
import pygame
import sys
以上两句导入语句 import sys具体作用为导入sys模块,为之后程序使用sys.exit()而导入
pygame.init() 我的理解为python对pygame的自检过程 在此程序中如此条代码如果没有,程序同样可以无报错运行,
理解为所谓自检过程便是python检测pygame的运行组件是否正常。

以上图片为cmd 中运行python 并导入pygame 并运行pygame.init()启动了pygame自检 结果为(6,0) 小白的理解为pygame有6个组件需要检测,6个都通过,
自检通过可以运行pygame,到目前未发现有其他运行结果
screen=pygame.display.set_mode((500,400))此处为建一个游戏窗口 大小为宽500,高400(500,400)以元组方式赋值

pygame.display.set_caption("测试窗口打开")此处为设置窗口标题, 其中pygame.display为pygame的基础属性可以直接调用
bg_color=(0,255,255)此处为游戏窗口的填充色,在程序后面调用screen.fill(bg_color),
---------------------------------------------------------------
while True:    #开始游戏的主循环无限循环直到游戏关闭
for event in pygame.event.get():#监视键盘和鼠标的事件
#print(event.type) 启用这一行,你将会在触动鼠标 键盘时 看到会触发那些事件并显示出来,你会更明白
if event.type==pygame.QUIT:#QUIT必须大写
sys.exit()#如果触发关闭窗口事件 便退出程序
--------------------------------------------------------------------------------------------
image=pygame.image.load("images/ship.bmp") 导入飞机图片
--------------------------------------------------------------------------------------------------
重点放在下面代码做阐述:
1.hero_rect=image.get_rect()此处取的飞机图片的矩形大小,以飞机图像(导入图像),可能不是一个规则的矩形,此语句会根据飞机图像建立一个包围飞机的最小
矩形:宽=136,高=168(图像属性尺寸),如下图为飞机的图像及属性:

2.screen_rect=screen.get_rect()此处取得游戏窗口屏幕的矩形及程序开始定义的游戏窗口宽与高,游戏窗口的矩形为了以后移动飞机位置取得坐标,此时绘制如下图位置:
飞机图像矩形位置坐标为:(left=0,top=0,width=136,heigh=168)

3.hero_rect.centerx =screen_rect.centerx将飞机图片的矩形移动到游戏窗口x轴的中心,(即 centery 表示的游戏窗口轴的中心)横向长度代表x轴
竖向表示y轴
没有这一句,运行程序飞机将出现在游戏窗口的左上角处如上图,
现将飞机移动到游戏窗口的上端中间处下图:

4.hero_rect.bottom=screen_rect.bottom将飞机图片的矩形移动到游戏窗口的低端 在次将飞机从x轴的中间(即将飞机从游戏窗口上端的中间处,
移动到游戏窗口低端的中间如图)下图

3,4两条语句的绘制 便将飞机的图片移动到游戏窗口的低端中间
5.screen.fill(bg_color)颜色填充游戏窗口 bg_color为之前配出的颜色变量
6.screen.blit(image,hero_rect)将飞机图片绘制到屏幕上
第6句表示将要绘制的图片image,绘制到screen(屏幕)的hero_rect位置,小白在此犯了个错误,先绘制图像到屏幕上,在进行窗口填充,你将看不到飞机
一定要先进行窗口填充(screen.fill(bg_color))在进行图像绘制

pygame.display.flip()让最近绘制的游戏窗口 显示在电脑屏幕上
————————————————
总结:在此游戏制作中,飞机在游戏窗口画面显示为一个矩形 ,如果把游戏窗口填充色改为飞机矩形填充色 效果会更好,首先建了个游戏窗口screen,之后用get_rect()

分别取得飞机及屏幕的矩形坐标、在此刻飞机已经被绘制到屏幕的(left=0,top=0,width="飞机宽带",heigh='飞机高度')位置,上图中空白处为飞机的矩形,
黄色区域为游戏窗口区域,之后用以下
hero_rect.centerx =screen_rect.centerx
hero_rect.bottom=screen_rect.bottom改变飞机在游戏屏幕中的位置,最后用
pygame.display.flip()把绘制好的游戏窗口在电脑屏幕上显示出来。由此游戏窗口好像我们创建的一块画布,之后我们按需要将元素画好在画布上,并调整好相对位置后,
在显示在屏幕上供用户使用。






免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM