Python游戏制作(一)

pygame

Python主要使用pygame制作游戏,因为pygame的版本问题建议使用python3.9以下版本,这样的不会出现pip安装不上pygame的情况

游戏框架搭建

import pygame
import sys
# 游戏初始化
pygame.init()
# 设置游戏名称
title = pygame.display.set_caption('小球冒险')
# 设置游戏界面大小
screen = pygame.display.set_mode((500,500))

其实我们已经创建完成一个完成的游戏界面,只不过我们的游戏界面只能出现一秒钟为了让我们的游戏界面持久存在所以需要while True进行循环

while True:
    print(11)

这时候我们发现游戏窗口一直出现,但是我们关闭不了,解决方案可以使用pygame的事件监控,并且监控是一个持续性的动作所以我们可以使用for循环

while True:
    for event in pygame.event.get():
        #监控我们是否点击了窗口右上角的关闭,若我们点击了就进行关闭窗口
        if event.type == pygame.QUIT:
            pygame.quit()
            # 提示我们系统中的视图没有进行初始化,我们可以使用sys.exit()
            sys.exit()

目前就是我们最简单的游戏框架
接着我们可以在游戏中填充一些内容:例如图片背景以及如何控制等

简单实战小球冒险

我们要做一个小球冒险的话,首先需要加载一个小球,这个小球就是一个图片,我们可以使用pygame.image.load()

ball = pygame.image.load('ball.png')

加载完成以后我们需要修改小球图片,因为原有图片可能大小不太合适pygame.transform.smoothscale(),里面可以传两个参数,第一个为修改什么图片,是字符串类型,第二个为改成多大是元组类型,注意:在pygame大小一般情况加都会传递一个元组过去。

# 修改小球图片
new_ball = pygame.transform.smoothscale(ball,(50,50))

修改完图片后我们需要把新修改的图片贴到屏幕上进行显示

screen.blit(new_ball, (ball_x, ball_y))

运行后我们发现没有出现小球图片,这时候我们可以调用pygame.display.update()更新屏幕解决

pygame.display.update()

小球出现后我们可以通过我们的键盘、鼠标点击的形式来控制小球的移动

        elif event.type == pygame.MOUSEBUTTONDOWN:
            # 判断点击的是左键,控制小球的贴图位置
            if event.button == 1:
                ball_x +=5
                # 判断点击的是右键,控制小球贴图位置
            elif event.button == 3:
                ball_x -=5
            # 同理可以判断是否使用鼠标进行上滚轮下滚轮
            elif event.button == 4:
                ball_y +=5
            elif event.button == 5:
                ball_y -=5

通过鼠标左右点击可以移动小球,但是同时我们也会发现小球重影效果,我们可以联想一下在我们纸上写了错别字我们是不是可以用改正带把它涂掉,等他干了我们在进行书写,依照这样的原理,目前背景是一个纯黑的背景,我们是不是可以先用黑色覆盖,然后再画出小球,解决小球重影问题
定义一个黑色,为RGB颜色用元组表示

black = (0,0,0)

把新的小球图片贴在0,0点的位置上也就是屏幕左上角(注意:图片是按照左顶点进行定位的,不是按照中心点定位)

    screen.fill(black)

这就是我们最简单的用鼠标控制小球的游戏

完整代码

import pygame
import sys
# 游戏初始化
pygame.init()
# 设置游戏名称
title = pygame.display.set_caption('小球冒险')
# 设置游戏界面大小
screen = pygame.display.set_mode((500,500))
# 加载小球(因为ball.png这个图片和我们pygame平级所以我们直接写名称)
# 小球x,y坐标
ball_x = 0
ball_y = 0
# 定义一个黑色,为RGB颜色用元组表示
black = (0,0,0)
ball = pygame.image.load('ball.png')
# 修改小球图片
new_ball = pygame.transform.smoothscale(ball,(50,50))

while True:
    for event in pygame.event.get():
        #监控我们是否点击了窗口右上角的关闭,若我们点击了就进行关闭窗口
        if event.type == pygame.QUIT:
            pygame.quit()
            # 提示我们系统中的视图没有进行初始化,我们可以使用sys.exit()
            sys.exit()
            # 判断我们是否点击鼠标
        elif event.type == pygame.MOUSEBUTTONDOWN:
            # 判断点击的是左键,控制小球的贴图位置
            if event.button == 1:
                ball_x +=5
            # 若我们使用鼠标滚轮键点击操作可以使小球进行瞬移
            # pygame.mouse.get_post()获取当前坐标
            elif event.button == 2:
                xy = pygame.mouse.get_pos()
                ball_x = xy[0]
                ball_y = xy[1]
            # 判断点击的是右键,控制小球贴图位置
            elif event.button == 3:
                ball_x -=5
            # 同理可以判断是否使用鼠标进行上滚轮下滚轮
            elif event.button == 4:
                ball_y +=5
            elif event.button == 5:
                ball_y -=5
            # 这时候我们关闭了出现报错
            # pygame.error: video system not initialized

    # 把新的小球图片贴在0,0点的位置上也就是屏幕左上角(注意:图片是按照左顶点进行定位的,不是按照中心点定位)
    screen.fill(black)
    screen.blit(new_ball, (ball_x, ball_y))
    pygame.display.update()

猜你喜欢

转载自blog.csdn.net/weixin_36662706/article/details/128999901
今日推荐