调皮的目录

  • 前言
  • 编程构思
    • 游戏主要结构设想
    • pygame
    • random
    • 颜色设定
    • 整体流程
    • 待改进的地方
  • 完整代码
  • 游戏截图

前言

某人最近在手机上玩起了找方块游戏,给我发了好几个截图皮我,挺考验颜色辨别能力的,看得我眼都花了。游玩之余我产生了一个大胆的想法,这个游戏好像用Python来写应该不难,网上都是俄罗斯方块、战机、贪吃蛇、2048这类主题,还没人写过这个找方块,那我就写个试试。

ps: 就这个,看得在下头晕目眩。

编程构思

游戏主要结构设想

  1. 游戏区域拟定为正方形区域,填充底色,每回合底色会随机改变。
  2. 再随机生成一个颜色稍亮的小方块区域,我们只有正确点到小方块区域内才能过关。
  3. 为了增加难度,可以设定生命值或者倒计时之类的限制条件。

pygame

说起图形界面类的Python库,一下就想到tk、pyqt、pygame,之前都随便写了点小程序玩,个人觉得前两个做那种按钮文本界面比较合适,游戏类的还是选择pygame,这也是非常有名的一个Python游戏库。

random

random模块肯定是要使用的,随机操作都靠它了。

颜色设定

每回合界面都会刷新成不同的颜色,那颜色一般都是RGB,有三个参数,我打开了PS的调色板,看看这个随机颜色该怎么写。
我把取色器移动到右上角,然后把色标从上往下拉,观察RGB三个参数的变化,找到了规律:
R、G、B三个数字中一定有一个255、一个0,还有一个在0-255之间变换。

我就用random库里的函数,定义一个列表存0、255和0-255的随机数,然后随机顺序抽取,变成元组,就成了每次背景的RGB颜色了。

不光有背景颜色,还有上面要点击的方块颜色,方块颜色是比背景色亮一点点的。
写代码对RGB三个参数做加减控制固定的亮度变化貌似不太容易,也没找到什么规律,不如就在界面上蒙上一个半透明的白色方块,这样覆盖的部分不就颜色变亮了嘛。
方块的坐标在左上角,我们根据方块尺寸还有界面大小,定义一下方块位置的范围。

整体流程

先把界面定义好,初始化,然后各个参数定义好。

我设定有10个等级,1个等级10个回合,每过1回合加10分,满100分升1级,也就是加到1000分就通关了。
每升1级肯定是要提高难度的,我们把pygame中设定半透明的参数alpha减10,这样要找的方块就越来越不明显不好找了。
再限定点错的次数,每次游戏只给3条命,如果第4次点错,游戏结束。

我们定义3个函数,分别是刷背景、刷方块、刷文本(显示生命、等级、得分)。
每次成功过关,背景、方块和文本都会刷新,但如果操作错误,只会刷新文本,显示生命值减少。

pygame是依靠循环刷新机制的,在While循环里,我们要设定获取鼠标左键的操作,右键或者滚轮的操作忽略,然后对参数进行判断,执行相应的操作。

待改进的地方

  1. 文字刷新会重叠,还没搞得清怎么把上一次显示的文字删掉。只好给文字设定了背景色,每次刷新文字就把前一次的覆盖掉。
  2. 可以再整一个开始界面,不用一上来直接开始。
  3. 再做一个附带重新游玩按钮的结束界面。

完整代码

我用的Python 3.7.3+PyCharm2020开发,pygame版本2.0.0。

import pygame, sys
from pygame.locals import *
import randomdef change_color():color = tuple(random.sample([0,255,random.randint(0,255)],3))s = pygame.Surface((400,400),pygame.SRCALPHA)s.fill(color)screen.blit(s,(0,50))def make_rec():global xglobal yglobal alphax = random.randint(0,361)y = random.randint(50,411)aim = pygame.Surface((40,40),pygame.SRCALPHA)aim.fill((255,255,255,alpha))screen.blit(aim,(x,y))# 测试用的作弊器# cheater = pygame.Surface((20,20))# cheater.fill((255,255,255))# screen.blit(cheater,(x+10,y+10))def refresh_text():global levelglobal scoreglobal roundlifetext = font1.render('Life: ' + str(life), False, (255, 255, 255), (0,0,0))leveltext = font1.render('Level:' + str(level) + '-' + str(round) + ' ', False, (255, 255, 255), (0,0,0))scoretext = font2.render('Score:' + str(score), False, (255, 255, 255), (0,0,0))screen.blit(lifetext,(0,0))screen.blit(leveltext, (0, 25))screen.blit(scoretext, (210, 10))if __name__ == '__main__':pygame.init()screen = pygame.display.set_mode((400, 450))window = pygame.display.set_caption('Python找方块')life = 3  # 允许错误次数score = 0 # 得分alpha = 100 # 透明度level = 1 # 等级round = 1 # 回合font1 = pygame.font.SysFont('Courier', 20)font2 = pygame.font.SysFont('Courier', 30)font3 = pygame.font.SysFont('Courier', 40)refresh_text()change_color()make_rec()pygame.display.flip()while True:if score == 1000:text = font3.render('Congratulations!', False, (255, 255, 255), (0, 0, 0))screen.blit(text, (8, 220))pygame.display.update()for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()elif event.type == MOUSEBUTTONDOWN:pygame.quit()sys.exit()for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()elif event.type == MOUSEBUTTONDOWN:if pygame.mouse.get_pressed() == (1,0,0):pos = pygame.mouse.get_pos()if x <= pos[0] <= x+40 and y <= pos[1] <= y+40:change_color()make_rec()score += 10round += 1refresh_text()pygame.display.update()else:life -= 1if life >= 0:refresh_text()pygame.display.update()else:pygame.quit()sys.exit()# 升级if score%100 == 0 and score > 0:alpha -= 10level += 1round = 1refresh_text()pygame.display.update()

游戏截图

以上就是一个简单的找方块小游戏,靓仔你学废了吗?快和小伙伴们一起玩玩吧!

pygame实现找方块(色彩敏感度测试)游戏相关推荐

  1. 色彩敏感度测试 l 据说只有1%的设计师能全对,不服来战!

    人的眼睛是很高级的器官 可以辨别700万种以上的颜色 我们常说世界是五颜六色的 但在一部分人眼中却并非如此 他们对部分颜色的分辨力很弱 对颜色细微差异的敏感度也不同 △不同人眼中糖果的颜色区别 你对色 ...

  2. 有关颜色敏感度测试的软件是啥,色彩敏感度测试:你是色盲吗?

    颜色是人们生活中最常见的,颜色会通过眼睛进入我们的脑电波.人对颜色的感觉不仅仅是通过眼睛,还包括你的心理状态.颜色每个人对色彩的敏感度不同,有时候看起来是同一种颜色的东西,其实它中间夹杂着其他的颜色. ...

  3. android3d堆叠效果,色彩堆叠3D游戏-色彩堆叠3D安卓版预约v0.2_第一手游网

    色彩堆叠3D是一款玩家需要重新排列色彩的休闲类游戏.色彩堆叠3D中玩家需要将杂乱的彩环重新的排列好,随着后期关卡逐渐的提升颜色数量和彩环数量,玩家需要仔细思考之后再进行排列.色彩堆叠3D里玩家需要逐渐 ...

  4. python Pygame库介绍和使用,基本游戏开发

    Pygame的介绍 Pygame是被设计用来写游戏的python模块集合,Pygame是在优秀的SDL库之上开发的功能性包.使用python可以导入pygame来开发具有全部特性的游戏和多媒体软件,P ...

  5. python游戏开发,pygame开发的一款黑白迭代游戏(用于学习娱乐)

    pygame是一款python,2D游戏开发工具,包含图像.声音.建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚. 最近了解了一下,出于好奇,做了一款简易版本的黑 ...

  6. c语言编程 测试姓名缘分,姓名配对两人爱情结果 爱情测试游戏

    名字不仅仅只是一个人的代号,名字也能测算两个人缘分的深浅,名字可以测试两个人的心灵契合度有多高,姓名配对两人爱情结果.所以在给孩子取名字的时候,家里的老人们总是要反复推敲.名字就如同符咒一般,好的名字 ...

  7. 利用AI技术自动测试游戏

    1.引子 近年来,游戏AI已从一种"伪智能"迭代成了真正的人工智能.3年前AlphaGo的成功只是证明了AI技术在游戏领域取得了巨大的发展,但另一方面AI技术对整个游戏行业的帮助仍 ...

  8. pygame开发PC端微信打飞机游戏

    pygame开发PC端微信打飞机游戏  一.项目简介1. 介绍本项目类似曾经火爆的微信打飞机游戏.游戏将使用Python语言开发,主要用到pygame的API.游戏最终将会以python源文件game ...

  9. linux测试游戏下载,一波超人内测版最新下载-一波超人内测版游戏下载v1.0.2-Linux公社...

    一波超人内测版游戏是一款非常热血且经典的冒险战斗玩法,热血的格斗开启热血的竞技之路.在游戏<一波超人内测版>里面,超多的英雄人物形象设计,每一个英雄都会拥有自己专属的职业技能,开启专属的战 ...

最新文章

  1. 整理一点关于Lucene的学习资料, 方便自己与别人查看
  2. 笨方法python3_“笨方法”学Python3,习题 43 。
  3. Windows Terminal 已上架,快尝鲜
  4. 利用计算机形考试二,计算机应用基础形考试题
  5. 《Learning OpenCV3》ch18:相机模型与标定
  6. 一个axios的简单教程
  7. c/c++教程 - 2.4.2.7~8 类对象作为类成员,static静态成员变量函数
  8. shell脚本:判断本地和远程文件是否存在
  9. 随机事件、随机变量、概率、概率密度函数
  10. paip.c++ qt 网页爬虫 的 网络编程 总结
  11. 苹果cms永久免费影视建站程序
  12. 支付宝显示服务器网关错误,支付宝服务窗网关问题
  13. Vue实现图片滑动验证
  14. 98家央企及下属上市企业全名单(2023版)
  15. vue3中scrollTop不生效的问题
  16. 码元传输速率计算及运用
  17. 【信息安全】RSA非对称加密算法原理(详解和C++代码实现)
  18. 服务器系统lede,[OpenWrt Wiki] 系统配置
  19. C语言单引号和双引号
  20. #ROM类(EPROM、PROM、EEPROM、MROM、Flash)汇总

热门文章

  1. 版本错误:@annotation pointcut expression is only supported at Java 5
  2. Final Cut Pro X 精选插件合集!
  3. systemd工具介绍
  4. android 设置录像帧率,华为手机设置相机录像帧率的方法
  5. ceph监控管理平台calamari
  6. 2021年美容师(初级)免费试题及美容师(初级)模拟试题
  7. 英伟达 Jetson Nano 新手必备:使用CSI或USB摄像头拍摄第一张照片
  8. 电脑上的日期从1980年到2099年
  9. 非视距成像:硬件设备总结
  10. 解决合并单元格筛选时只出现首行的小技巧