Pygame游戏实战五:拼图游戏

介绍模块

本游戏使用的是由Pycharm中的pygame模块来实现的,也可以在python中运行。通过Pygame制作一个拼图游戏,将一个完整的图片进行随机切分,在将其进行还原成完整的图像,看看这个是你小时候玩的游戏吗?

最小开发框架

详情请看此文章:
Pygame游戏模块介绍二:最小开发框架代码_pygame最小开发框架_牧子川的博客-CSDN博客

Pygame和sys模块

import pygame # 制作游戏时要使用的模块
import sys # python的标准库,对内部各功能模块进行初始化创建,系统模块

random模块

需要在屏幕上随机生成食物的位置,通过随机一个位置来表示食物的位置

from random import randint

详情请看此文章:Pygame游戏模块介绍一:random模块简介_random 范围_牧子川的博客-CSDN博客

相关功能  

【童年游戏】拼图游戏

随机生成游戏盘面

生成一个新的游戏界面,并随即移动图块 max_rand_time 次,得到随机的游戏界面

def newGameBoard():
    # 生成一个新的游戏盘面。首先创建一个长度为cell_nums的列表,其中每个元素都是其在列表中的位置。然后将最后一个元素(即右下角的空白块)的值设为-1
    board = []
    for i in range(cell_nums):
        board.append(i)
    black_cell = cell_nums - 1
    board[black_cell] = -1

    # 随机移动拼图块max_rand_time次,生成随机的游戏盘面
    for i in range(max_rand_time):
        direction = random.randint(0, 3)
        if direction == 0:
            black_cell = moveLeft(board, black_cell)
        elif direction == 1:
            black_cell = moveRight(board, black_cell)
        elif direction == 2:
            black_cell = moveUp(board, black_cell)
        elif direction == 3:
            black_cell = moveDown(board, black_cell)
    return board, black_cell

键盘事件

# 按下方向键或者字母键,则移动方块
        if event.type == KEYDOWN:
            if event.key == K_LEFT or event.key == ord('a'):
                black_cell = moveLeft(gameBoard, black_cell)
            if event.key == K_RIGHT or event.key == ord('d'):
                black_cell = moveRight(gameBoard, black_cell)
            if event.key == K_UP or event.key == ord('w'):
                black_cell = moveUp(gameBoard, black_cell)
            if event.key == K_DOWN or event.key == ord('s'):
                black_cell = moveDown(gameBoard, black_cell)

鼠标事件

        # 点击鼠标左键,则移动方块
        if event.type == MOUSEBUTTONDOWN and event.button == 1:
            x, y = pygame.mouse.get_pos()
            col = int(x / cellWidth)
            row = int(y / cellHeight)
            index = col + row * ROWS
            if index == black_cell - 1 or index == black_cell + 1 or index == black_cell - ROWS or index == black_cell + ROWS:
                gameBoard[black_cell], gameBoard[index] = gameBoard[index], gameBoard[black_cell]
                black_cell = index

拼图完成

    # 如果拼图已经完成,则将黑色方块移回右下角,并标记游戏结束
    if isFinished(gameBoard):
        gameBoard[black_cell] = cell_nums - 1
        finish = True

绘制网格线

# 绘制拼图的网格线
    for i in range(ROWS + 1):
        pygame.draw.line(windowSurface, BLACK, (i * cellWidth, 0), (i * cellWidth, gameRect.height))
    for i in range(ROWS + 1):
        pygame.draw.line(windowSurface, BLACK, (0, i * cellHeight), (gameRect.width, i * cellHeight))

图片界面

扩展可添加功能

1.图块增加

2.增加游戏事件

3.增加关卡

源码获取

mzc421/PyGame: 使用Pygame 来制作各种有趣的经典游戏 (github.com)

 欢迎关注我的公众号:@AI算法与电子竞赛    

​​

硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Pygame拼图游戏是一种基于Pygame开发的经典拼图游戏,主要目的是将乱序的图像碎片重新拼接成完整的原图。与传统的拼图游戏相比,Pygame拼图游戏具有更加生动、立体和互动的特点。 在Pygame拼图游戏中,首先需要准备一张完整的图像。这张图像会被切割成若干个小块,然后随机打乱它们的顺序。游戏开始时,玩家需要通过点击空白块的周围块来移动块的位置,最终将它们按照原图的顺序拼接起来。 Pygame拼图游戏具有以下几个特点。首先,游戏界面以图像为基础,并且使用Pygame库中的相关函数来实现图像的加载和切割等操作。其次,游戏中的块可以通过键盘或鼠标来移动,提供了多种操作方式。此外,游戏还可以设置计时器和计步器,用于记录玩家完成拼图所花费的时间和步数。 Pygame拼图游戏开发相对简单,但也需要一定的编程基础。开发者需要了解Pygame库的基本用法,如图像加载、事件监听、绘制等。在实现游戏逻辑时,需要设计算法来实现块的移动和碰撞检测等功能。此外,还可以添加音效和背景音乐等元素,提升游戏的趣味性和娱乐性。 总而言之,Pygame拼图游戏是一款简单而有趣的游戏,适合初学者学习Pygame库的使用,也能够提供娱乐和放松的体验。无论是对图像处理和游戏开发有兴趣的人,还是想挑战自己拼图能力的人,都可以尝试开发或者体验这款游戏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

牧锦程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值