前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pygame游戏常用方法

pygame游戏常用方法

作者头像
叶子陪你玩
发布2020-09-28 10:44:55
9080
发布2020-09-28 10:44:55
举报

python做2d游戏,用的最多的就是pygame库,虽然比较老了,但是非常经典。尽管现在有很多其它游戏的库,可是都封装的比较多了,很多非常重要的细节都被隐藏了。

设计的课程还是采用了这个库,我把一些常用的整理出来了,

学习库最好的方法还是看文档,非常详细,且每个方法都有介绍。

文档:https://www.pygame.org/docs/

自学pygame或者学习这种类似库的时候,首先看自己是要解决那部分的问题,找到对应的方法;一般方法都会有说是用来干什么的。

然后就是看这个方法需要传入什么内容,然后返回什么内容;知道这两点基本上就可以上手使用了,想要了解更底层就可以看源代码。

最简框架

写游戏也是有基本套路的,首先是一个可以跑起来的基本框架;

代码语言:javascript
复制
import pygame
import sys
pygame.init()
window = pygame.display.set_mode([600, 400])
pygame.display.set_caption('标题')

while True:  
    # 事件循环
    for event in pygame.event.get():    
        if event.type == pygame.QUIT:  
            sys.exit()  
    # 游戏逻辑
     
    # 图形绘制渲染
     
    #刷新屏幕
    pygame.display.update()

事件

键盘,比如控制左右移动,其它数字键字符类似。

代码语言:javascript
复制
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                pos_x -= 3
            if event.key == pygame.K_RIGHT:
                pos_x += 3

鼠标控制,鼠标控制有获取鼠标位置,跟随鼠标移动的;

代码语言:javascript
复制
pos = pygame.mouse.get_pos() # 获取鼠标位置(x,y)

也有鼠标左中右点击的;

代码语言:javascript
复制
        if event.type == pygame.MOUSEBUTTONDOWN:
            state_list = pygame.mouse.get_pressed()
            if state_list[0]==1: # 左键
                pass
            if state_list[1] == 1: # 中键
                pass
            if state_list[2] == 1: # 右键
                pass

pygame.Surface 对象

可以看作一个图像对象,这个概念非常重要,屏幕上看见的图形都是这个对象;

不管是图片加载返回的对象:

代码语言:javascript
复制
pygame.image.load -> Surface
    load(filename) -> Surface
    load(fileobj, namehint="") -> Surface
    save(Surface, filename) -> None

直接生成对象;

代码语言:javascript
复制
surface = pygame.Surface([width,height])

绘制的几何图形;

代码语言:javascript
复制
# 绘制一条线
pygame.draw.line(screen, [200,0,0], [0, 0], [50, 30], 5)

# 绘制一个空心矩形
pygame.draw.rect(screen, [200,0,0], [75, 10, 50, 20], 2)

# 绘制一个矩形
pygame.draw.rect(screen, [200,0,0], [150, 10, 50, 20])

# 绘制一个圆
pygame.draw.circle(screen, [200,0,0], [60, 250], 40)

# 绘制弧线
pygame.draw.arc(screen, [200,0,0], [210, 75, 150, 125], 0, pi/2, 2)

还是绘制的字体文本对象

代码语言:javascript
复制
pygame.font.render()
draw text on a new Surface
render(text, antialias, color, background=None) -> Surface

sprite类

这个对于管理多个游戏对象非常有用,

代码语言:javascript
复制
sprite = pygame.sprite.Sprite()
sprite_list = pygame.sprite.Group()

绘制图形和检测游戏对象碰撞都非常方便。

还是时间,图形转换,声音什么的就不讲了,都是单独的方法,一看就能明白;

游戏类型

不知道做什么游戏?

打开小游戏网站,看见什么好玩做什么;

通常大家做的最多的就是射击类游戏,一般这种最简单,只需要控制移动就行了;

要想全面理解各种游戏设计思路,可以每种都是一些,很多游戏是需要有很好的数据设计结构,不然后面变动非常麻烦;

经典的有贪吃蛇,俄罗斯方块,推箱子,连连看,五子棋,这些都是利用到一些数据结构的,能做出这些,一般的游戏都没问题;

还有联机游戏,就需要用到网络编程相关知识了,相当于多了一个中间环节,这个有时间再讲。

(全文完)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档