基于python的pygame实现造梦西游天宫道的笔记(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


未经作者授权禁止转载!!!

基于python的pygame实现造梦西游天宫道的笔记(一)

最近正在学习pygame模块的使用,主要的知识来自《Python编程从入门到实践》里的“外星人入侵”游戏。
模仿制作的,是自己很喜欢的游戏之一造梦无双天宫道,主要素材都是自己用PS截下来的,所以可能画质比较差,但对于学习来说无关紧要。


提示:以下是本篇文章正文内容,下面案例可供参考

一、屏幕及动画的绘制

1.图片加载

编写游戏,第一步就是要把所要显示的图片搞上去,加载图片使用以下类似语句加载

image = pygame.image.load('images/beijing2.png')

2.图片的绘制

绘制图片之前,需要获得屏幕的一些相关参数,这里直接给出程序。

#主函数
import pygame
from settings import Settings

pygame.init()
ai_settings = Settings()
screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
#在屏幕上绘制图片,image_rect表示图片的位置,下面会说
screen.blit(image,image_rect)
#显示最近blit加载的图片
pygame.display.flip()

而这里用到的类-Settings,代码如下

#settings.py
#造梦游戏的屏幕设置
class Settings():
	'''基本设置'''
	def __init__(self):
		self.screen_width = 1100
		self.screen_height = 580

运行后可以看到图片已成功加载
在这里插入图片描述

3.pygame关闭的程序

这里最好写一个check_event里写一个sys的exit()出口,不然只能用任务管理器关掉,如下。

import sys
def check_event():
    #监视鼠标和键盘事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

二、rect的功能与应用

1.rect位置获取与示意

而图片搞上去,一定要调整图片中的位置。pygame中的rect,可以提供一个很好的图片位置控制功能,使用之前要先用get_rect()获得此图片的信息,如:

image_rect = image.get_rect()

然后我们可以使用image_rect中的位置控制,将此图片放在不同的位置上。以下为rect的调用示意图,比如image_rect.top += 5,就是选中此图片的最上边一条,将其移动五个像素点。
这里面的left,right,centerx表示横坐标,top,bottom,centery表示纵坐标,使用centerx/centery时需注意,没有image_rect.center的这个单独的指令
在这里插入图片描述

3.屏幕画布的布局

使用pygame打开窗口,他的横纵坐标分布如下图所示,其中最左上角坐标为(0,0),右下角坐标最大,其坐标大小根据图片的大小制定。
在这里插入图片描述
PS:因为自己还不会使用pygame对图片大小进行操作,所以所有图片都是使用photoshop里的画布大小的选项进行调整。

三、按键的处理

1.按键的种类

event = pygame.event.get(),可以监视获得鼠标和键盘事件。
event.type 可以监视按键的类型,如“按下”操作、“抬起”操作、“关闭”操作等等:
判断是否为按下操作,if event.type == pygame.KEYDOWN
判断是否为抬起操作,if event.type == pygame.UP
判断是否为关闭操作,if event.type == pygame.QUIT

2.按键的值

event.key可以监视按键的值为多少,可以是抬起,也可以是按下:
判断是否是“空格键”,if event.key == pygame.SPACE
判断是否是“Q键”,if event.key == pygame.Q
判断是否是“下键”,if event.key == pygame.DOWN
判断是否是“左键”,if event.key == pygame.LEFT

四、逻辑的制作

通过以上的基础,加上不同的类的编写,以及显示贴图的位置,就可以实现简单的控制人物跳跃,移动,下移等等动作,且配合不同的帖图展示,就可以把一张贴图写“活”。

总结

以下为简单的实例。
逻辑很简单,但要配合起来也花了半天的功夫,写代码半小时,改bug两小时,本来以为就是简单的逻辑,但真正自己动手做的时候就发现没那么简单。此外感谢我室友给我提供的“跳跃时应该有加速度”的建议,是他把这只造梦无双的宠物猴说“活”了。
其次就是美工,实话实说,我处理图片的时间要远远比写代码的时间长的多,我也感受到了图片在游戏实现里的重要性,美工是真的厉害hhh
在这里插入图片描述
另外剩下的功能实现还有待考虑,因为我也不清楚pygame是否能实现一些flash动画能实现的功能,且打小兵什么的我还没想要要怎么搞,所以接下来更不更新看心情吧~

"造梦西游"通常是指基于Python游戏开发框架和技术,其中一种流行的是pygame,它是Python的一个游戏开发库,可以让开发者轻松地创建2D游戏。如果你想用Python编写一款简单的"造梦西游"风格游戏,你可以按照以下步骤操作: 1. 安装pygame:首先需要安装pygame模块,可以使用pip命令`pip install pygame`。 2. 设计基本元素:创建游戏角色、敌人、具等,并设置其属性如位置、移动、碰撞检测等。 3. 场景设计:设计地图背景、层级结构,比如使用瓷砖系统或者直接绘制图像。 4. 游戏逻辑:编写控制角色移动、攻击、升级等功能的函数。 5. 用户交互:处理键盘输入,让玩家能够控制角色行动。 6. 渲染与更新:定期更新屏幕显示,并在适当的时候切换场景。 7. 测试优化:测试游戏性能,修复bug并调整游戏体验。 以下是一个非常简化的示例,展示如何开始制作: ```python import pygame # 初始化pygame pygame.init() # 设置窗口大小 screen = pygame.display.set_mode((800, 600)) # 创建角色类 class Hero(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface((50, 50)) self.image.fill((255, 0, 0)) # 红色 self.rect = self.image.get_rect() self.rect.center = (400, 300) # 游戏主循环 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill((0, 0, 0)) # 清屏黑色 hero.update() # 更新英雄的位置 hero.draw(screen) # 绘制英雄到屏幕上 pygame.display.flip() # 刷新画面 pygame.quit() # 关闭pygame ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值