python游戏入门儿童版一,引导认识并学习画画

如何才能让小孩对python产生兴趣?没错,让小孩把编程当成玩游戏,让它们设计出简单的游戏,找了一下,发现pygame模块的相关教程还是比较多,而且简单容易入手,但还是没找到适合小孩简单入门教程,为了让小孩更容易入手,我写了这个教程,希望它能引导更多的小朋友对python产生兴趣。

安装python

安装pygame模块

pip install pygame

1,先尝试下

import pygame

pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 设置窗口的大小
pygame.quit() # 结束

是不是发现有个窗口弹出来一下就消失了

2,学习time模块的睡眠方法

我们先试看什么是睡眠

import time

time.sleep(2)#加入睡眠时间2秒
print("睡醒了吗,懒虫,我等了整整2秒时间")

发现等了2秒之后才运行,我们可以尝试更改这个时间的长短来看下效果

同样我们可以利用这个方法让我们的窗口停一下再关闭,代码如下:

import pygame
import time

pygame.init() # 初始化
pygame.display.set_mode((800,600)) # 设置窗口的大小

time.sleep(2)#加入睡眠时间2秒

pygame.quit() # 结束

发现窗口可以停止2秒钟然后就关闭,那么想让窗口停长点时间,我们可以更改这个睡眠时间

3,给窗口设置一个标题

import pygame
import time

pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 设置窗口的大小
pygame.display.set_caption("这是一个给我们画画用的窗口")

time.sleep(2)#加入睡眠时间2秒

pygame.quit() # 结束

这里我们顺便获取一个画布,pygame.display.set_mode((800,600))的返回结果是pygame.Surface类型,也就是我们要的画布,我们可以使用screen = pygame.display.set_mode((800,600)) 来获取画布,之后我们就可以在画布screen上画画了。

4,在窗口画一个圆

circle(surface, color, center, radius)

参数surface指的是要画圆的pygame.Surface对象,也就是画布,把第三点活到的screen画布放这里就可以了

color:指定了圆的颜色(由参数width决定该颜色是画圆的线的颜色还是填充色),该参数的类型是Color类或者表示颜色的元组;颜色是按照rgb,三个值来定,可以百度rgb颜色值找下对应的颜色,这里给出几种颜色值如下:

WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)


center:指定了圆心的位置,其类型是Vector2类或者表示位置的元组或列表;
radius:表示圆的半径,该参数的类型是整型或者浮点型,如果该参数的值小于1,则不进行画圆的动作。

circle():函数的返回值是Rect类型的变量,表示画出的圆的范围。

尝试一下,代码如下

import pygame
import time

pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 设置窗口的大小
pygame.display.set_caption("这是一个给我们画画用的窗口")

pygame.draw.circle(screen,(255,0,0),(200,300),20)#画一个圆形

time.sleep(2)#加入睡眠时间2秒

pygame.quit() # 结束

但是发现窗口没什么变化,这是因为我们没有更新窗口,我们可以使用:pygame.display.update()来更新窗口

代码如下:

import pygame
import time

pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 设置窗口的大小
pygame.display.set_caption("这是一个给我们画画用的窗口")

pygame.draw.circle(screen,(255,0,0),(200,300),20)#画一个圆形
pygame.display.update()

time.sleep(2)#加入睡眠时间2秒

pygame.quit() # 结束

这个时候我们可以看到一个红色的圆了

我们更改参数来看看还能画出什么圆来

5,让画画动起来

这次我们利用循环for来更改圆的半径,并循环10次,每次睡眠1秒

具体代码如下:

import pygame
import time

pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 设置窗口的大小
pygame.display.set_caption("这是一个给我们画画用的窗口")

r = 20 #一开始的半径
for i in range(10):
    pygame.draw.circle(screen, (255, 0, 0), (200, 300), r)  # 画一个圆形
    pygame.display.update()  # 更新圆
    r += 10 #半径加10
    time.sleep(1)  # 睡眠1秒

pygame.quit() # 结束

想想我们还可以更改什么值来做出什么动画呢?

6,让窗口不要关闭

我们发现不断加长循环次数,或把睡眠时间加长点,窗口就不会那么快关闭,但最终还是会自己关闭,那么我们是否可以让他一直不要关闭呢?

答案是可以的,我们可以利用while循环来让他一直打开着

代码如下:

import pygame

pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 设置窗口的大小
pygame.display.set_caption("这是一个给我们画画用的窗口")

r = 20
while True:
    pygame.draw.circle(screen,(255,0,0),(200,300),r)
    r += 1
    pygame.display.update()

pygame.quit() # 结束

发现这次我们不需要time模块的睡眠了,也可以让窗口一直打开着,这是因为我么用了死循环while True

7,事件

第6点的时候我们发现窗口可以一直打开了,但还有一个问题,就是希望我们点击右上角关闭窗口的时候,窗口就关闭

具体代码如下:

import pygame

pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 设置窗口的大小
pygame.display.set_caption("这是一个给我们画画用的窗口")

r = 20
going = True
while going:
    for event in pygame.event.get():  # 遍历事件
        if event.type == pygame.QUIT:  # 退出事件
            going=False
    pygame.draw.circle(screen,(255,0,0),(200,300),r)
    r += 1
    pygame.display.update()
pygame.quit()

8,刷新频率

我们可以通过时间来延迟动画刷新频率,这次又需要用到time模块,代码如下:

import pygame
import time

pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 设置窗口的大小
pygame.display.set_caption("这是一个给我们画画用的窗口")

r = 20
going = True
while going:
    for event in pygame.event.get():  # 遍历事件
        if event.type == pygame.QUIT:  # 退出事件
            going=False
    pygame.draw.circle(screen,(255,0,0),(200,300),r)
    r += 1
    pygame.display.update()
    time.sleep(0.1)
pygame.quit()

也可以使用pygame给我们提供的clock对象来控制刷新频率,这次不需要time模块了,代码如下:

import pygame

pygame.init() # 初始化
screen = pygame.display.set_mode((800,600)) # 设置窗口的大小
pygame.display.set_caption("这是一个给我们画画用的窗口")

clock = pygame.time.Clock() # 创建一个clock对象
r = 20
going = True
while going:
    for event in pygame.event.get():  # 遍历事件
        if event.type == pygame.QUIT:  # 退出事件
            going=False
    pygame.draw.circle(screen,(255,0,0),(200,300),r)
    r += 1
    pygame.display.update()
    clock.tick(10) # 刷新频率为10,也就是1s刷新10次,每个100ms刷新一次
pygame.quit()

9,除了画圆我们还能画什么呢?

看看其他函数吧

pygame.draw.rect()  —  绘制矩形
pygame.draw.polygon()  —  绘制多边形
pygame.draw.circle()  —  根据圆心和半径绘制圆形
pygame.draw.ellipse()  —  根据限定矩形绘制一个椭圆形
pygame.draw.arc()  —  绘制弧线
pygame.draw.line()  —  绘制线段
pygame.draw.lines()  —  绘制多条连续的线段
pygame.draw.aaline()  —  绘制抗锯齿的线段
pygame.draw.aalines()  —  绘制多条连续的线段(抗锯齿)
 

具体可以参考:

Pygame详解(三):draw 模块_pygame.draw.rect_来自江南的你的博客-CSDN博客

现在你可以画很多图形并,让他们动起来了吧

其它参考:

大爽pygame入门教程 第一节 基础知识_pygame画三角形_大爽歌的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boyxgb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值