惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
爱范儿
爱范儿
D
Docker
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Tailwind CSS Blog
D
DataBreaches.Net
月光博客
月光博客
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Visual Studio Blog
MyScale Blog
MyScale Blog
B
Blog
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
Recent Announcements
Recent Announcements
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
“编学编玩”用Pygame写游戏(2)在场景中绘制图形与动画
J.sky · 2017-10-19 · via 碎言

pygame的框架使用起来很简单,但这个框架功能也还算可以的,虽然网上对pygame评价褒贬不一,但对于其的存在必有其的存在意义,功能上虽然不能说是十分的完美,但对于新手来说,在使用和学习中还是很有价值的。

pygame 图形绘制

rect 绘制矩形 polygon 绘制多边形(三个及三个以上的边) circle 绘制圆 ellipse 绘制椭圆 arc 绘制圆弧 line 绘制线 lines 绘制一系列的线 aaline 绘制一根平滑的线 aalines 绘制一系列平滑的线

上边列举了一些图形绘制的方法,第一结中的代码我们只是给出pygame中最简约的实现代码,我们在上节代码的基础之上继续添加一下,试试画出各种图形。

pygame.draw.polygon(screen, RED, ((146,0),(290,100),(36,277),(55,200),(0,106)),2)
pygame.draw.line(screen, BLUE, (11,33), (55,300), 1)
pygame.draw.circle(screen, GREEN, (300,50), 100, 0)
pygame.draw.ellipse(screen, RED, (300,250,180,80), 1)
pygame.draw.rect(screen, RED, (200,150,100,100), 1)

以上为各种图形绘制的方法演示,关于这些方法的参数,我们可以参考官方的文档,其实都是挺简单的。

在场景中绘制图片

游戏中的角色不可能只是一些简单的图形,大多数时应该都是一张张图片,我们看下图片的绘制方法

bosiImg = pygame.image.load('./images/bosi.png')
screen.blit(bosiImg,(bosix,bosiy))

通过pygame.image.load()加载图片后,在场景中使用screen.blit绘制,两个参数:图片对象和一个坐标元组。

在场景中写字

pygame中的文字绘制稍稍有一点麻烦,我们看代码:

fobj = pygame.font.Font('./font/3.ttf', 40)
textobj = fobj.render('Hello World', True, GREEN,)
text = textobj.get_rect()
text.center = (400, 400)
screen.blit(textobj, text)#文字显示

看代码行数是五步:

  1. 通过pygame.font.Font()加载字体,创建一个font对象,设置文字的大小
  2. 通过render('Hello World', True, GREEN,)设置文字的内容,颜色。
  3. get_rect()或得一个rect对象,之后就有些象绘制图象了。
  4. 设置绘制图像的坐标
  5. blit()方法绘制文字到场景

让图片动起来

如何在场景中绘制动画?动画其实就是角色坐标值的修改,

bosix = 100
bosiy = 100

在代码中我定义了二个变量,然后我在游戏场景的循环输出中,不断的修改角色的坐标值即可达到需要的动画效果了。

输入图片说明

本文源码下载: