【python拼图游戏】图片自选,来挑战一下自己的极限吧~

news2025/8/6 20:42:37

嗨害大家好鸭!我是小熊猫❤

拼图的画面多以自然风光、建筑物以及一些为人所熟识的图案的为题材。

城堡和山峦是两类传统的主题,

不过任何图画和影像都可以用做拼图的素材。

有一些公司还提供将私人摄影作品制成拼图的服务。

今天我小熊猫就给带来python的单面拼图小游戏~


准备素材

字体文件

请添加图片描述
图片素材

请添加图片描述
这个大家可以自行准备或者在文末推广领取哦~

图片可以准备大家喜欢的人物、风景、美女等等哦~不限哒

代码展示💖

🎯 这里仅展示部分代码,完整的免费源码领取处:点击这里

导入模块

import os
import sys
import random
import pygame
from pygame.locals import *

定义一些常量

BACKGROUNDCOLOR = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
BLACK = (0, 0, 0)
FPS = 40
NUMRANDOM = 100

退出

def Stop():
	pygame.quit()
	sys.exit()

判断游戏是否结束

# 源码解答加Q裙:660193417
def isOver(board, size):
	try:
		num_cells = size * size
	except:
		num_cells = size[0] * size[1]
	for i in range(num_cells-1):
		if board[i] != i:
			return False
	return True

将空白Cell左边的Cell右移到空白Cell位置

def moveR(board, blank_cell_idx, num_cols):
	if blank_cell_idx % num_cols == 0:
		return blank_cell_idx
	board[blank_cell_idx-1], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx-1]
	return blank_cell_idx-1

将空白Cell右边的Cell左移到空白Cell位置

def moveL(board, blank_cell_idx, num_cols):
	if (blank_cell_idx+1) % num_cols == 0:
		return blank_cell_idx
	board[blank_cell_idx+1], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx+1]
	return blank_cell_idx+1

将空白Cell上边的Cell下移到空白Cell位置

def moveD(board, blank_cell_idx, num_cols):
	if blank_cell_idx < num_cols:
		return blank_cell_idx
	board[blank_cell_idx-num_cols], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx-num_cols]
	return blank_cell_idx-num_cols

将空白Cell下边的Cell上移到空白Cell位置

def moveU(board, blank_cell_idx, num_rows, num_cols):
	if blank_cell_idx >= (num_rows-1) * num_cols:
		return blank_cell_idx
	board[blank_cell_idx+num_cols], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx+num_cols]
	return blank_cell_idx+num_cols

获得打乱的拼图

# 源码解答加Q裙:660193417#
def CreateBoard(num_rows, num_cols, num_cells):
	board = []
	for i in range(num_cells):
		board.append(i)
	# 去掉右下角那块
	blank_cell_idx = num_cells - 1
	board[blank_cell_idx] = -1
	for i in range(NUMRANDOM):
		# 0: left, 1: right, 2: up, 3: down
		direction = random.randint(0, 3)
		if direction == 0:
			blank_cell_idx = moveL(board, blank_cell_idx, num_cols)
		elif direction == 1:
			blank_cell_idx = moveR(board, blank_cell_idx, num_cols)
		elif direction == 2:
			blank_cell_idx = moveU(board, blank_cell_idx, num_rows, num_cols)
		elif direction == 3:
			blank_cell_idx = moveD(board, blank_cell_idx, num_cols)
	return board, blank_cell_idx

随机选取一张图片

def GetImagePath(filepath):
	imgs = os.listdir(filepath)
	if len(imgs) == 0:
		raise ValueError('No pictures in <%s>...' % filepath)
	return os.path.join(filepath, random.choice(imgs))

显示游戏结束界面

def ShowEndInterface(screen, width, height):
	screen.fill(BACKGROUNDCOLOR)
	font = pygame.font.Font('font/simkai.ttf', width // 8)
	title = font.render('Finished!', True, (233, 150, 122))
	rect = title.get_rect()
	rect.midtop = (width/2, height/2.5)
	screen.blit(title, rect)
	pygame.display.update()
	pygame.time.wait(500)
	# 源码解答加Q裙:660193417#
	while True:
		for event in pygame.event.get():
			if event.type == QUIT:
				Stop()
			elif event.type == KEYDOWN:
				if event.key == K_ESCAPE:
					Stop()

🎯 博主所有文章素材、解答、源码领取处:点击

效果展示

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

今天的文章就是这样啦~

我是小熊猫,咱下篇文章再见啦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FFmpeg5.1 解码rtsp 并用OpenCV 播放

RTSP 连接过程如下图 看下实际过程中FFmpeg 的日志情况&#xff1a; [tcp 0000014CC3256D40] No default whitelist set [tcp 0000014CC3256D40] Original list of addresses: [tcp 0000014CC3256D40] Address ::1 port 8554 [tcp 0000014CC3256D40] Address 127.0.0.1 po…

使用BP神经网络、RBF神经网络以及PSO优化的RBF神经网络对数据进行预测(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

Keysight是德科技E5061B网络分析仪-安泰测试

E5061B ENA系列网络分析仪从5Hz 至3GHz提供了广泛的频率范围。它不仅支持一般的射频应用(例如滤波器或放大器测量等)&#xff0c;还支持低频应用(例如直流至直流转换器环路增益测量)。因此&#xff0c;它是所有实验台上进行网络分析的最重要工具。 拥有E5061B&#xff0c;您就…

Selenium4 新特性

一、Selenium4 简介 Selenium是一个综合性项目,包含一系列的工具和库,支持Web浏览器的各种自动化操作: 软件测试爬虫领域RPA领域优点: 开源:https://github.com/SeleniumHQ兼容性: Chrome、FireFox、Edeg、IE、Opera、Safari支持多种编程语言:Java、Python、C#、Ruby、…

Charles抓包web、手机、小程序配置

一、下载地址 二、web抓包 Charles Web抓包&#xff0c;启动Charles会自动与浏览器设置成代理&#xff0c;不需要进行过多的设置。接下来就是通过浏览器发送网络请求&#xff0c;Charles就会直接抓取到这些信息和响应信息。 1、抓取HTTPS协议 Charles配置 点击顶部菜单栏【He…

双功能螯合剂p-NCS-Bz-DFO,1222468-90-7,p-SCN-Bn-Deferoxamine特点分析

●外观以及性质&#xff1a; p-SCN-Bn-Deferoxamine属于双功能螯合剂&#xff0c;西安凯新生物科技有限公司是各种修饰性PEG供应商&#xff0c;提供各种品质优良PEG衍生物&#xff0c;分子量从1000-40000不等&#xff0c;纯度≥95%&#xff0c;发货速度快。 ●中文名&#xff…

Web学习笔记-React

笔记内容转载自AcWing的Web应用课讲义&#xff0c;课程链接&#xff1a;AcWing Web应用课。 CONTENTS1. React配置环境2. ES6语法补充3. Components1. React配置环境 React官网&#xff1a;React。 React是一个声明式&#xff0c;高效且灵活的用于构建用户界面的JavaScript库…

凡事预则立,不预则缺货!2022年底了核芯物联蓝牙AOA定位基站GA25缺货!GA10缺货!GA60也缺货!

凡事预则立&#xff0c;不预则缺货&#xff01;2022年底了核芯物联蓝牙AOA定位基站GA25缺货&#xff01;GA10缺货&#xff01;GA60也缺货&#xff01; 核芯物联岳毅恒 ​ 深圳核芯物联科技有限公司 战略合作拓展总监 凡事预则立&#xff0c;不预则缺货&#xff01;202222年底…

brython | 初探鼠标事件-1:点击事件

各位前端大佬勿笑话&#xff0c;运维小弟献丑了。 前段时间看见大佬使用【文言文】写了一个连连看&#xff0c;于是我也想用【brython】也实现一个连连看。 于是乎&#xff0c;你们就看到这篇文章和这个项目了。 如果大佬们对brython不是特别了解的话&#xff0c;建议先查看之…

JVM分析工具

JVM在运行过程中&#xff0c;我们可以利用各种工具对JVM进行分析&#xff0c;这是性能调优的利器。可以通过各种工具了解在系统运行过程中&#xff0c;在JVM底层到底发生了什么。JVM分析工具一般分为两种&#xff0c;一种是命令行工具&#xff0c;一种是图形界面工具。 JVM分析…

卷积操作的不同类型

文章目录1. 一维卷积2. 二维卷积3. 三维卷积4. 扩张卷积5. 空洞卷积6. 分组卷积一般而言&#xff0c;一维卷积用于文本数据&#xff1b;二维卷积用于图像数据&#xff0c;对宽度和高度都进行卷积&#xff1b;三维卷积用于视频及3D图像处理领域&#xff0c;对立方体的三个面进行…

CS5269TypeC转HDMI2.0+VGA带PD100W快充拓展坞方案芯片完整设计资料(原理图+PCB文件)

CS5269TypeC转HDMI2.0VGA带PD100W快充方案芯片原理图&#xff1a; 用于US Type-C或DP1.4连接到HDMI2.0转换器。CS5269集成了DP1.4HDMI2.0的输出端和VGA输出接口。另外&#xff0c;两个CC控制器包括CC通信&#xff0c;以实现DP Alt模式和功率传输功能&#xff0c;一个用于上游类…

SD-WAN NFV uCPE VNF

NFV&#xff08;network function virtulization) NFV&#xff08;network function virtulization&#xff0c;网络功能虚拟化&#xff09;是指一种操作框架&#xff0c;目的是为了将部署在COTS硬件上的、在虚拟基础架构中的VNF软件设备编排和自动化起来&#xff0c;然后进行…

精耕丨“银发族”与“熬夜党”都在养生,大健康品牌怎样精耕消费者需求?

“被疫情偷走的这三年”里&#xff0c;健康成为所有人不得不面对的生活命题。 丁香医生《2022国民健康洞察报告》显示&#xff0c;2021年人们平均存在4.8个健康困扰&#xff0c;算得上“人均亚健康”&#xff0c;其中情绪、身材、皮肤焦虑位列TOP3。 人们对稳住健康的追求也一…

5G无线技术基础自学系列 | 物理共享信道分配

素材来源&#xff1a;《5G无线网络优化实践》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 在LTE协议中&#xff0c;DCI的位置和对应…

第一章《初学者问题大集合》第8节:Java程序初步释疑

当成功运行了第一个Java程序,很多读者都对之前的各项操作以及所写的这行代码有一些不清楚的地方,本节就来解答一下这些问题。其实,初学者的大部分疑问都集中体现在图1-41中。 图1-41 源文件名与类名称 1.类是个什么东西? 前文曾经让各位读者在写代码之前先创建一个“类”…

day065:IO流、字节流、字节流写数据

目录 一、IO流 1.IO流的目的 2.IO的表示 二、IO流的分类 1.按流向分 2.按数据类型分 三、字节流 1.字节流写数据 2.字节流的注意事项 3.字节流写数据的三种方式 4.字节流写数据的两个问题 &#xff08;1&#xff09;字节流写数据如何换行&#xff1f; &#xff08;…

腾讯云服务器部署vue前端项目(Ubuntu+vue+nginx+nodejs+npm)

一、安装nodejs和npm sudo apt-get nodejs sudo apt-get npm 但是在安装npm后&#xff0c;输入npm --version时&#xff0c;会报错 此时&#xff0c;需要升级nodejs的版本&#xff0c;执行下面的两条命令 wget -qO- https://deb.nodesource.com/setup_16.x | sudo -E bash - …

兄弟兄弟,在git中的使用.gitignore忽略不想要提交的文件,了解一下呗

1. .gitignore的作用 在实际的工程项目中&#xff0c;除了项目本身的代码文件、配置文件外&#xff0c;还有一些文件或目录并不需要纳入版本管理中&#xff0c;如idea工具会在工程根目录生成一个.idea的目录、工程编译后生的target等。因此在提交代码文件的时候需要自动把这些目…

医学图像处理-安装nibabel包命令

医学图像处理-安装nibabel包命令问题与解决方案问题与解决方案 直接使用 pip install nibabel 出现如下报错&#xff1a; 尝试使用conda 命令安装&#xff0c;conda官网查命令&#xff1a; conda install -c conda-forge nibabel conda install -c conda-forge/label/gcc7 ni…