乐愚社区Beta

 编程语言  >  pygame游戏入门02.1 ——绘制基础图形练习

pygame游戏入门02.1 ——绘制基础图形练习

原来是稀琳  L7  • 2024-10-02 • 回复 0 • 只看楼主举报    

我是一个python入门的小白,做这个系列即是为了巩固pygame的相关知识,也是为了考验自己坚持做一件事。
另外如果下内容有错误或不规范的请各位大佬积极指出,谢谢大家。

在上一节中,我们已经学习了绘制基本三个基本图形(直线,矩形,圆)的教程却没有进行过实战,接下来,我将通过一个绘图的小案例来带各位画一个简单的图像 ——丑陋的脸(临时想的,没有什么美学价值,还请各位见谅。)

接下来我们先看一下实际的效果:

这就是大致的效果了(它真的,真的是一张很丑的脸,请各位见谅

接下来是展示它的代码:

import pygame
import sys
import random 
#初始化pygame
from pygame.locals import*
pygame.init()

# 控制眼珠变色的速度,防止CPU高速运行
clock = pygame.time.Clock() 

#创建游戏窗口
width = 300
height = 300
screen = pygame.display.set_mode((width,height))

#给游戏窗口命名
pygame.display.set_caption("原来是稀琳")

#脸的变量
circle_x = 150
circle_y = 150
r =150

#眼睛变量
x_1 = 60
y_1 = 60
width_1 = 30
height_1 = 60

x_2 = 180
y_2 = 60
width_2 = 30
height_2 = 60

#胡子变量
huzi_x_up = 90
huzi_y_up = 170

huzi_x_down = 70
huzi_y_down = 190

#主循环
runing = True
while runing:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            
            runing = False
    #清屏
    screen.fill((0,0,0))

    # 画脸
    pygame.draw.circle(screen,(225,225,0),(circle_x,circle_y),r)
    
    # 画眼睛
    pygame.draw.rect(screen,(225,0,0),(x_1,y_1,height_1,width_1)) 
    pygame.draw.rect(screen,(225,0,0),(x_2,y_2,height_2,width_2))

    #变色小眼珠
    red = random.randint(0,225)
    yellow = random.randint(0,225)
    bule = random.randint(0,225)
    pygame.draw.rect(screen,(red,yellow,bule),
                     (x_1 + 30,y_1 ,height_1 // 2,width_1))
    pygame.draw.rect(screen,(red,yellow,bule),
                     (x_2 ,y_2 ,height_2 // 2,width_2))
    # 画鼻子
    pygame.draw.line(screen,(160,90,55),(150,130),(150,160),5)

    # 画胡子
    pygame.draw.line(screen,(0,0,0),
                     (huzi_x_up,huzi_y_up),(huzi_x_down,huzi_y_down),2)

    for num in range(30): 
        temp_huzi_x_up = huzi_x_up + num * 5 
        temp_huzi_x_down = huzi_x_down + num * 5 
        pygame.draw.line(screen,(0,0,0),  
                    (temp_huzi_x_up,huzi_y_up),(temp_huzi_x_down,huzi_y_down),2) 
        
    #画笑脸
    pygame.draw.rect(screen,(160,50,130),(80,200,140,20))
    pygame.draw.rect(screen,(160,50,130),(100,220,20,20))
    pygame.draw.rect(screen,(160,50,130),(180,220,20,20))
    pygame.draw.rect(screen,(160,50,130),(80,240,140,20))
    #刷新游戏窗口
    pygame.display.update()
    # 控制帧率
    clock.tick(10)    

#关闭游戏窗口
pygame.quit()
sys.exit()

 

接下来我主要讲的是:
1、循环速度的帧率(FPS)控制
2、运用pygame时的一些关于变量位置的规范见解

 

1、循环速度的帧率(FPS)控制 

       首先我们要知道:在Pygame中,控制帧率(FPS)是优化游戏性能和确保游戏运行流畅的重要步骤。它通过控制帧率,可以确保游戏在不同硬件配置的设备上都能以一致的速度运行。

       Pygame提供了一个Clock对象,用于管理和控制游戏的帧率,Clock对象的主要方法包括tick()和get_fps()。

       接下来,我们开始运用它:

import pygame 
 
#初始化pygame
pygame.init()  

#创建clock
clock = pygame.time.Clock()  

'''
记:一般习惯于在开头创建clock

'''

      最后结束时:

 pygame.display.flip()  
 
    # 控制帧率 
    clock.tick(10)  

'''
clock.tick()里的10计算FPS帧数,
它可以控制1秒钟循环的帧数

'''

 

2、运用pygame时的一些关于变量位置的规范见解(个人见解)

在pygame中写变量时,我一般是在主循环上面写变量内容,并且加上注释,有助于提高代码的可读性

总而言之,自己多尝试,多写,多练。学习不是白驹过隙,一蹴而就,它是百川到海,不断前行。

与君共勉,下期再见。


还没注册帐号?快来注册社区帐号,和我们一起嗨起来!
关于本社区

集各类兴趣爱好于一身的轻量化交流社区,在此您可以和他人一起分享交流您觉得有价值的内容,社区鼓励大家发表原创内容,为社区添砖加瓦!

发帖奖励 → 社区版规 → 招聘版主 →
推荐版块
扫描二维码下载社区APP
回到顶部