【教学类-64-02】20240610色块眼力挑战(二)-2-25宫格色差10-100(10倍)(星火讯飞)

news2024/10/5 15:35:22

背景需求

以下的色块眼里挑战需要人工筛选图片,非常繁琐。

【教学类-64-01】20240607色块眼力挑战(一)-0-255随机底色-CSDN博客文章浏览阅读446次,点赞12次,收藏5次。【教学类-64-01】20240607色块眼力挑战(一)-0-255随机底色https://blog.csdn.net/reasonsummer/article/details/139522756?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139522756%22%2C%22source%22%3A%22reasonsummer%22%7D

目前没有AI对话大师,无法用它写程序了。

因此在网络上搜索相关的代码,找到moyuweiqing的【Python小游戏】使用tkinter制作不同的找不同色块小游戏。

【Python小游戏】使用tkinter制作不同的找不同色块小游戏-CSDN博客文章浏览阅读377次。测一测你的色差情况_找不同色块https://blog.csdn.net/moyuweiqing/article/details/134263628

原作者代码

'''
作者:moyuweiqing
https://blog.csdn.net/moyuweiqing/article/details/134263628
'''

from tkinter import *
from tkinter import messagebox
import numpy as np
import random
 
start_grid_num = 2              # 开始的每行格子数
grid_num = start_grid_num       # 每次调用时候的每行格子数
size = 800                      # 画布的大小
margin = 2                      # 格子边缘大小
max_grid_num = 25               # 最大的每行格子数
 
start_color_gap = 40            # 开始的色块差
min_color_gap = 5               # 最小色块差
color_gap = start_color_gap     # 每次调用时候的色块差
color_list = []                 # 颜色列表
each_size = 0                   # 每块格子的大小
A = np.full((grid_num, grid_num), 0)    # 矩阵
 
score = 0                       # 计算分数
 
def get_random_position(length):
    random_x = random.randint(0, length - 1)
    random_y = random.randint(0, length - 1)
    return random_x, random_y
 
def change_color_from_rgb(rgb):
    return "#%02x%02x%02x" % (rgb[0], rgb[1], rgb[2])
 
def color_change():
    global color_list, color_gap
    color_list = []
    rgb_set1 = [random.randint(0, 255 - color_gap), random.randint(0, 255 - color_gap), random.randint(0, 255 - color_gap)]
    rgb_set2 = list((i + color_gap for i in rgb_set1))
    color_list.append(change_color_from_rgb(rgb_set1))
    color_list.append(change_color_from_rgb(rgb_set2))
 
    if color_gap > min_color_gap:
        color_gap -= 1
 
def draw():
    global grid_num, each_size, A
    A = np.full((grid_num, grid_num), 0)
    each_size = size // grid_num
    s_x, s_y = get_random_position(grid_num)
    A[s_x][s_y] = -1
 
    canvas.delete('all')
    color_change()
 
    # 画方块
    for i in range(0, grid_num):
        for j in range(0, grid_num):
            if A[i][j] == 0:
                canvas.create_rectangle(i * each_size + margin, j * each_size + margin, (i + 1) * each_size - margin,
                                        (j + 1) * each_size - margin,
                                        fill=color_list[0])
            elif A[i][j] == -1:
                canvas.create_rectangle(i * each_size + margin, j * each_size + margin, (i + 1) * each_size - margin,
                                        (j + 1) * each_size - margin,
                                        fill=color_list[1])
    if grid_num < max_grid_num:
        grid_num += 1
 
def if_right(x, y):
    global score
    xx = x // each_size
    yy = y // each_size
    if A[xx][yy] == -1:
        score += 1
        return True
    else:
        return False
 
def click(event):
    if if_right(event.x, event.y):
        draw()
    else:
        messagebox.showinfo('游戏结束!', '您的分数是:' + str(score))
        tk.destroy()
 
if __name__ == '__main__':
    tk = Tk()
    tk.title('找不同色块')
 
    canvas = Canvas(tk, width=size, height=size, background='lightcyan')
    canvas.pack()
    draw()
 
    canvas.bind("<Button -1>", click)
 
    tk.mainloop()

存在问题:

我的电脑上始终无法安装tkinter,所以我不想做成TK界面小程序,只想要图片就行。

解决方式1——使用文心一言修改代码

但是源代码字母超过2000字符,没有办法完整输入代码,并写入需求

解决方式2——使用讯飞星火

讯飞星火是免费的,可以输入超过2000字的代码,并输入需求

成果展示:

通过对moyuweiqing的【Python小游戏】使用tkinter制作不同的找不同色块小游戏。代码的修改,实现了快速获得“2-25宫格”“色差从10-100”“题卡和答案”“导入PPT”四种需求

'''
目的:不同的找不同色块小游戏(从2宫格-25宫格,色差从10,20^100)有提卡和答案,从难度1-10(难度1就是色差100,难度10是色彩10)
图片导入PPT
原作者:moyuweiqing
https://blog.csdn.net/moyuweiqing/article/details/134263628
改编:星火讯飞,阿夏
时间:2024年6月9日
'''

print('------1、图片和答案----------')
from PIL import Image, ImageDraw  # 导入PIL库中的Image和ImageDraw模块
import numpy as np  # 导入numpy库并简写为np
import random ,os # 导入random库

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\辨认色彩图'
new_path=path+r'\01样式'  # 图片保存路径
os.makedirs(new_path,exist_ok=True)

start_grid_num = 2              # 开始的每行格子数
grid_num = start_grid_num       # 每次调用时候的每行格子数
size = 800                      # 画布的大小
margin = 2                      # 格子边缘大小
max_grid_num = 25               # 最大的每行格子数

# 难度
nd=list(range(10,0,-1))
print(nd)

start_color_gap = list(range(10,110, 10))      # 开始的色块差,10的色块与其他底色相同,看不清清除,,100数字越大,对比越清晰,看的清除
# start_color_gap = list(range(100, 0, -10))      # 为了从简单(100)到难(10),数字翻过来
print(start_color_gap)
min_color_gap = 5               # 最小色块差
color_list = []                 # 颜色列表
each_size = 0                   # 每块格子的大小
A = np.full((grid_num, grid_num), 0)    # 矩阵
max_color_gap = 25  

def get_random_position(length):
    random_x = random.randint(0, length - 1)  # 随机生成x坐标
    random_y = random.randint(0, length - 1)  # 随机生成y坐标
    return random_x, random_y

def change_color_from_rgb(rgb):
    return "#%02x%02x%02x" % (rgb[0], rgb[1], rgb[2])  # 将RGB颜色转换为十六进制颜色

def color_change():
    global color_list, color_gap
    color_list = []  # 清空颜色列表
    rgb_set1 = [random.randint(0, 255 - color_gap), random.randint(0, 255 - color_gap), random.randint(0, 255 - color_gap)]  # 生成第一个颜色的RGB值
    rgb_set2 = list((i + color_gap for i in rgb_set1))  # 生成第二个颜色的RGB值
    color_list.append(change_color_from_rgb(rgb_set1))  # 将第一个颜色添加到颜色列表中
    color_list.append(change_color_from_rgb(rgb_set2))  # 将第二个颜色添加到颜色列表中

    if color_gap > min_color_gap:
        color_gap -= 1  # 如果当前颜色间隔大于最小颜色间隔,则减小颜色间隔

if __name__ == '__main__': 
    
    for zz in range(len(start_color_gap)): 
        start_grid_num = 2              # 开始的每行格子数
        grid_num = start_grid_num       # 每次调用时候的每行格子数   
        for yy in range(start_grid_num, max_grid_num + 1): 
            color_gap = start_color_gap[zz]
            print(color_gap)
            A = np.full((grid_num, grid_num), 0)  # 重置二维数组
            each_size = size // grid_num  # 计算每个网格的尺寸
            s_x, s_y = get_random_position(grid_num)  # 获取随机位置
            A[s_x][s_y] = -1  # 将随机位置的值设为-1

            img1 = Image.new('RGB', (size, size), 'lightcyan')  # 创建一个新的图片对象
            img2 = Image.new('RGB', (size, size), 'lightcyan')  # 创建一个新的图片对象
            draw1 = ImageDraw.Draw(img1)  # 创建一个绘图对象
            draw2 = ImageDraw.Draw(img2)  # 创建一个绘图对象
            color_change()  # 改变颜色

            for i in range(0, grid_num):
                for j in range(0, grid_num):
                    if A[i][j] == 0:
                        draw1.rectangle([i * each_size + margin, j * each_size + margin, (i + 1) * each_size - margin, (j + 1) * each_size - margin], fill=color_list[0])  # 绘制矩形并填充颜色
                        draw2.rectangle([i * each_size + margin, j * each_size + margin, (i + 1) * each_size - margin, (j + 1) * each_size - margin], fill=color_list[0])  # 绘制矩形并填充颜色
                    elif A[i][j] == -1:
                        draw1.rectangle([i * each_size + margin, j * each_size + margin, (i + 1) * each_size - margin, (j + 1) * each_size - margin], fill=color_list[1])  # 绘制矩形并填充颜色
                        draw2.rectangle([i * each_size + margin, j * each_size + margin, (i + 1) * each_size - margin, (j + 1) * each_size - margin], fill=color_list[1], outline='white', width=10)  # 绘制矩形并填充颜色,添加黑色边框

            if grid_num <= max_grid_num:
                grid_num += 1  # 如果当前网格数量小于最大网格数量,则增加网格数量
            img1.save(new_path+fr'\难度{nd[zz]:02d}色彩间距{start_color_gap[zz]:03d}色块差{min_color_gap:03d}格子数{grid_num-1:02d}_01试题.png')  # 保存图片
            img2.save(new_path+fr'\难度{nd[zz]:02d}色彩间距{start_color_gap[zz]:03d}色块差{min_color_gap:03d}格子数{grid_num-1:02d}_02答案.png')  # 保存图片


print('------2、导入PPT----------')

import os
from pptx import Presentation
from pptx.util import Inches

# 创建一个新的PPT文件
ppt = Presentation()

# 设置PPT页面大小为800x800
ppt.slide_width = Inches(8)
ppt.slide_height = Inches(8)

# 获取123文件夹中的所有图片文件
image_folder = new_path
image_files = [f for f in os.listdir(image_folder) if f.endswith(('.png', '.jpg', '.jpeg', '.gif'))]

# 将图片批量导入到PPT中
for image_file in image_files:
    slide = ppt.slides.add_slide(ppt.slide_layouts[6])  # 添加一个空白幻灯片
    img_path = os.path.join(image_folder, image_file)
    left, top, width, height = Inches(0), Inches(0), Inches(8), Inches(8)
    slide.shapes.add_picture(img_path, left, top, width, height)

# 保存PPT文件
ppt.save(path+r'\色块小游戏.pptx')

结果展示

以下是难度1,最简单的,色差100,所以看起来对比明显,最小色差5,从2宫格-25宫格,每个宫格有试题和答案两张

以下是难度10,最难的,色差10,几乎看不出色彩差异,最小色差5,从2宫格-25宫格,每个宫格有试题和答案两张

把所有2宫格图像提取出来,可以看,色差越大(100),辨认难度越小,所以放在难度是1,色差越小(10)辨认难度越高(几乎与周边颜色相同),所以难度10。

图片放大看,

这样生成速度很快。一共480图,实际240图

保存为PPT。

视频展示

202406106色块小游戏

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

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

相关文章

web入门(1)---6.10

总结&#xff1a; 多做一点NSSCTF的新手赛&#xff0c;了解基本题型&#xff0c;然后打牢基础知识 谢队讲解 攻防世界 Web入门题 讲解_哔哩哔哩_bilibili 题目来源&#xff1a;攻防世界新手区 1.view_source 查看源代码 2.get_post 收获&#xff1a; get方法是直接在url…

攻防世界---misc---BotW-

1、下载附件是一张图片 2、查看图片属性&#xff0c;用winhex分析&#xff0c;没有发现奇怪的地方&#xff0c;用binwalk&#xff0c;接着使用foremost 3、得到两张图片&#xff0c;一张是原图&#xff0c;一张是特殊的字符 4、经过查阅资料得知&#xff0c;这是希卡文字&#…

数据中心基础设施智能运维

数据中心基础设施智能运维 随着科技的飞速发展&#xff0c;数据中心作为信息社会的核心基础设施&#xff0c;扮演着越来越重要的角色。然而&#xff0c;传统的运维模式由于对人力资源的高度依赖&#xff0c;已无法满足现代数据中心对高效、安全和可持续运维的要求。华为的《数…

IO流(转换流)

InputStreamReader&#xff08;字符输入转换流 &#xff09; 解决不同编码时&#xff0c;字符流读取文本内容乱码的问题 public static void main(String[] args) {try (//1.得到文件的原始字节流(GBK的字节流形式)FileInputStream is new FileInputStream("src/666.tx…

Objective-C的初始化方法中,应该如何读写属性

除非有明确的原因需要使用setter, getter, 否则总是应该直接访问, 也就是直接使用实例变量&#xff08;也称为 iVar&#xff09;来读写数据 理由&#xff1a; 避免子类覆盖setter方法的影响&#xff1a;若在初始化方法中使用setter方法, 使用此方法实例化子类, 可能会调用子类…

23.汽水兑奖

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动&#xff0c;旨在激发青少年对学习人工智能与算法设计的热情与兴趣&#xff0c;提升青少年科学素养&#xff0c;引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/106 题目描…

【Golang】Map 稳定有序遍历的实现与探索:保序遍历之道

【Golang】Map 稳定有序遍历的实现与探索&#xff1a;保序遍历之道 大家好 我是寸铁&#x1f44a; 总结了一篇【Golang】Map 稳定有序遍历的实现与探索&#xff1a;保序遍历之道✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言&#x1f34e; 在计算机科学中&#xff0c;数据结…

从零开始搭建Electron项目之运行例程

最好的学习方式就是&#xff1a;给一段能够运行的代码示例。 本文给出了例程资源&#xff0c;以及运行的步骤。 在国内开发electron有一点特别不好&#xff0c;就是如果不爬梯子&#xff0c;下载依赖容易出错。 一、例程资源 到如下路径下载例程到本地。 GitCode - 全球开发者…

新技术前沿-2023-大模型的本质

大模型时代需要什么样的人才&#xff1f; 1 大模型的本质 特斯拉前AI总监Andrej Karpathy的新教程&#xff0c;涵盖模型推理、训练、微调和新兴大模型操作系统以及安全挑战。 1.1 大模型本质就是两个文件 首先&#xff0c;大模型是什么&#xff1f; 大模型本质就是两个文件…

转型AI产品经理(7):“格式塔原则”如何应用在Chatbot产品中

格式塔原则&#xff0c;又称为完形原则&#xff0c;它是一组关于人类如何感知视觉元素的心理学理论&#xff0c;这些原则说明了大脑如何将分散的视觉元素整合为有意义的整体&#xff0c;即使这些元素本身可能是分离的&#xff0c;帮助我们理解人们如何组织和解释复杂的视觉信息…

C++网络编程基础

文章目录 协议局域网通信IP 地址网络通信的本质tcp 和 udp 协议网络字节序网络主机数据转化接口 协议 协议&#xff1a;收到数据后&#xff0c;多出来的那一部分&#xff0c;也叫一种 “约定”&#xff0c;一整套的自硬件到软件&#xff0c;都有协议&#xff0c;需要有人定制&a…

KUKA机器人KRC5控制柜面板LED显示

对于KUKA机器人新系列控制柜KRC5控制柜来说&#xff0c;其控制柜面板LED布局如下图&#xff1a; 其中①②③④分别为&#xff1a; 1、机器人控制柜处于不同状态时&#xff0c;LED显示如下&#xff1a; 2、机器人控制柜正在运行时&#xff1a; 3、机器人控制柜运行时出现的故障…

金融数据中心能力建设指引

金融数据中心能力建设指引 金融数据中心能力建设指引旨在通过高标准的基础设施建设、完善的数据管理、强大的信息安全防护和业务连续性规划&#xff0c;确保数据中心具备高效、安全、可靠的运行能力&#xff0c;支持金融业务的稳定发展。该指引强调技术创新、标准化管理、人才…

迅为RK3562开发板ARM四核A53核心板瑞芯微国产人工智能Linux安卓

iTOP-3562开发板采用瑞芯微RK3562处理器&#xff0c;内部集成了四核A53Mali G52架构&#xff0c;主频2GHZ&#xff0c;内置1TOPSNPU算力&#xff0c;RK809动态调频。支持OpenGLES1.1/2.0/3.2、0penCL2.0、Vulkan 1.1内嵌高性能2D加速硬件。 内置独立NPU, 算力达 1TOPS,可用于轻…

搭建RocketMQ主从异步集群

搭建RocketMQ主从异步集群 1、RocketMQ集群模式 为了追求更好的性能&#xff0c;RocketMQ的最佳实践方式都是在集群模式下完成的。RocketMQ官方提供了三种集群搭建方式&#xff1a; 2主2从异步通信方式&#xff1a;使用异步方式进行主从之间的数据复制。吞吐量大&#xff0c;…

不同数据库背后的数据存储方案

在大数据和AI时代&#xff0c;数据库成为各类应用不可或缺的重要组成部分。而数据库中的数据依赖存储引擎进行管理&#xff0c;包括数据的存储、查询、更新和删除等。因此&#xff0c;在设计系统时&#xff0c;选择正确的数据库存储引擎方案变得尤为重要。这篇文章将以关系型、…

Switch 之 H3C S5500

System # system view <H3C> system‐view [H3C] quit <H3C># display version [H3C]display version H3C Comware Software, Version 7.1.045, Release 3116# configuration save <H3C> save <H3C> display current‐configuration # factory reset …

程序员副业大揭秘:如何独立开发产品,月入过万,实现工作自由

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 咱们程序员这一行&#xff0c;在外人眼里一直都是高收入的代名词&#xff0c;每每提及&#xff0c;都有羡慕的眼光。然后只有我们自己知道&…

排序题+贪心

排序力扣题 一&#xff1a;合并区间 56. 合并区间 方法一&#xff1a;先排序再合并 如图&#xff0c;把区间按照起点从小到达排序&#xff0c;如果起点相同那么按照终点小的优先排序 然后每次记录一个区间&#xff0c;访问下一个区间&#xff1a; 如果下一个区间的起点<前…