专栏首页叶子陪你玩编程pygame游戏常用方法

pygame游戏常用方法

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

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

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

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

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

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

最简框架

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

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()

事件

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

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                pos_x -= 3
            if event.key == pygame.K_RIGHT:
                pos_x += 3

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

pos = pygame.mouse.get_pos() # 获取鼠标位置(x,y)

也有鼠标左中右点击的;

        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 对象

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

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

pygame.image.load -> Surface
    load(filename) -> Surface
    load(fileobj, namehint="") -> Surface
    save(Surface, filename) -> None

直接生成对象;

surface = pygame.Surface([width,height])

绘制的几何图形;

# 绘制一条线
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)

还是绘制的字体文本对象

pygame.font.render()
draw text on a new Surface
render(text, antialias, color, background=None) -> Surface

sprite类

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

sprite = pygame.sprite.Sprite()
sprite_list = pygame.sprite.Group()

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

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

游戏类型

不知道做什么游戏?

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

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

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

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

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

(全文完)

本文分享自微信公众号 - 叶子陪你玩编程(gh_cd062460d25e),作者:青叶子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【pygame系列 第二课 狮子动画 】

    python我们可以做文字版的游戏,比如猜数字游戏,21点游戏。那python可以做图形界面的游戏吗?偷偷告诉你,用pygame库就可以实现了。pygame是p...

    用户7054460
  • 【pygame系列 第一课 创建游戏窗口 】

    python我们可以做文字版的游戏,比如猜数字游戏,21点游戏。那python可以做图形界面的游戏吗?偷偷告诉你,用pygame库就可以实现了。pygame是p...

    用户7054460
  • python小游戏设计入门5-捡金币游戏(下)

    本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地...

    用户7054460
  • 【Pygame 第1课】 hello pygame

    我们已经把python的基本内容讲得差不多了,所以从今天起,尝试一下新的方面:pygame -- 用python来写游戏。 pygame是一个python的游戏...

    Crossin先生
  • Python 项目实践一(外星人入侵)第一篇

    python断断续续的学了一段实践,基础课程终于看完了,现在跟着做三个小项目,第一个是外星人入侵的小游戏: 一 Pygame pygame 是一组功能强大而有趣...

    用户1198337
  • Python:pygame的初步使用

    4.创建窗口,pygame.display.set_mode(resolution=(0,0),flags=0,depth=0),resolution窗口大小,...

    菜菜不吃蔡
  • Python 使用 pygame 实现一个简单的动画

    一个会写诗的程序员
  • pygame系列_pygame的各模块叙述

    在pygame中,有很多模块,每个模块对应着不同的功能,如果我们知道这些模块是做什么的,那么,对我们的游戏开发会起到关键性的作用。

    Hongten
  • 【pygame系列 第二课 狮子动画 】

    python我们可以做文字版的游戏,比如猜数字游戏,21点游戏。那python可以做图形界面的游戏吗?偷偷告诉你,用pygame库就可以实现了。pygame是p...

    用户7054460
  • 16 Python 基础: 重点知识点--Pygame的基础知识梳理

    本文首发于腾讯云+社区,也可关注微信公众号【离不开的网】支持一下,就差你的关注支持了。

    小Gy

扫码关注云+社区

领取腾讯云代金券