当前位置: 首页 > news >正文

Python精选200Tips:166-170

实战项目

        • P166--测试记忆力的益智游戏
          • 技术栈:5分钟内通关
        • P167--好用的中英文翻译器
          • 技术栈:googletrans的使用
        • P168--图片压缩为字符串
          • 技术栈:更高级的加密算法
        • P169--电影推荐系统
          • 技术栈:协同过滤的基本实现
        • P170--Python网页测试题
          • 技术栈:Flask的使用

运行系统:macOS Sequoia 15.0
Python编译器:PyCharm 2024.1.4 (Community Edition)
Python版本:3.12

往期链接:

1-56-1011-2021-3031-4041-50
51-60:函数61-70:类71-80:编程范式及设计模式
81-90:Python编码规范91-100:Python自带常用模块-1
101-105:Python自带模块-2106-110:Python自带模块-3
111-115:Python常用第三方包-频繁使用116-120:Python常用第三方包-深度学习
121-125:Python常用第三方包-爬取数据126-130:Python常用第三方包-为了乐趣
131-135:Python常用第三方包-拓展工具1136-140:Python常用第三方包-拓展工具2

Python项目实战

141-145146-150151-155156-160161-165
P166–测试记忆力的益智游戏
技术栈:5分钟内通关
import random
import pygame
import sys
from pygame.locals import *# 常量定义
Frame_Speed = 20
Window_Width = 640
Window_Height = 480
Speed_Reveal = 3
Box_Size = 40
Gap_Size = 10
Border_Width = 10
Border_Height = 7# 检查棋盘的方块数是否为偶数
assert (Border_Width * Border_Height) % 2 == 0, '棋盘需要有偶数的方块以形成配对。'
X_margin = int((Window_Width - (Border_Width * (Box_Size + Gap_Size))) / 2)
Y_margin = int((Window_Height - (Border_Height * (Box_Size + Gap_Size))) / 2)# 颜色定义
BackGround_color = (200, 200, 255)  # 浅蓝色背景
Box_Color = (255, 255, 255)          # 白色方块
HighLight_Color = (255, 215, 0)      # 金色高亮
Light_BackGround_color = (93, 46, 100)# 形状定义
CIRCLE = 'circle'
SQUARE = 'square'
DIAMOND = 'diamond'
LINES = 'lines'
OVAL = 'oval'# 修改为更丰富的颜色和形状
All_Colors = [(255, 0, 0),      # 红色(0, 255, 0),      # 绿色(0, 0, 255),      # 蓝色(255, 255, 0),    # 黄色(255, 128, 0),    # 橙色(128, 0, 255),    # 紫色(0, 255, 255)     # 青色
]
All_Shapes = [CIRCLE, SQUARE, DIAMOND, LINES, OVAL]# 检查形状和颜色是否足够
assert len(All_Colors) * len(All_Shapes) * 2 >= Border_Width * Border_Height, "棋盘对于定义的形状/颜色来说太大。"# 主函数
def main():global Frame_Speed_Clock, DIS_PlaySurfpygame.init()Frame_Speed_Clock = pygame.time.Clock()DIS_PlaySurf = pygame.display.set_mode((Window_Width, Window_Height))X_mouse = 0Y_mouse = 0pygame.display.set_caption('记忆游戏')Board = Randomized_Board()Boxes_revealed = GenerateData_RevealedBoxes(False)first_Selection = NoneDIS_PlaySurf.fill(BackGround_color)Start_Game(Board)while True:mouse_Clicked = FalseDIS_PlaySurf.fill(BackGround_color)Draw_Board(Board, Boxes_revealed)for event in pygame.event.get():if event.type == QUIT or (event.type == KEYUP and event.key == K_ESCAPE):pygame.quit()sys.exit()elif event.type == MOUSEMOTION:X_mouse, Y_mouse = event.poselif event.type == MOUSEBUTTONUP:X_mouse, Y_mouse = event.posmouse_Clicked = Truex_box, y_box = Box_Pixel(X_mouse, Y_mouse)if x_box is not None and y_box is not None:if not Boxes_revealed[x_box][y_box]:Draw_HighlightBox(x_box, y_box)if not Boxes_revealed[x_box][y_box] and mouse_Clicked:Reveal_Boxes_Animation(Board, [(x_box, y_box)])Boxes_revealed[x_box][y_box] = Trueif first_Selection is None:first_Selection = (x_box, y_box)else:icon1shape, icon1color = get_Shape_Color(Board, first_Selection[0], first_Selection[1])icon2shape, icon2color = get_Shape_Color(Board, x_box, y_box)if icon1shape != icon2shape or icon1color != icon2color:pygame.time.wait(1000)  # 等待1000毫秒 = 1秒Cover_Boxes_Animation(Board, [(first_Selection[0

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何确定SAP 某些凭证或者单号的号码编码范围的 OBJECT 是什么?
  • Selenium与数据库结合:数据爬取与存储的技术实践
  • UE学习篇ContentExample解读------Blueprint_Communication-上
  • Leecode刷题之路从今天开始
  • 吸尘器制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
  • 经验——CLion通过SSH远程开发__imx6ull的linux开发
  • 【MySQL】数据库基础认识
  • 分区与分桶
  • PlayerPerfs-不同平台的存储位置
  • 最大似然估计,存在即合理
  • Python自动化测试中替代Seleium库的解决方案
  • JSONC:为JSON注入注释的力量
  • 手把手教你CNVD漏洞挖掘 + 资产收集
  • 最新版电子发票样式html+css--普通发票+增值发票
  • Java+Spring Cloud +UniApp 智慧工地源码,用户PC端、移动端数据同步,支持多端展示
  • php的引用
  • @angular/forms 源码解析之双向绑定
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Angular6错误 Service: No provider for Renderer2
  • avalon2.2的VM生成过程
  • Go 语言编译器的 //go: 详解
  • Java面向对象及其三大特征
  • laravel with 查询列表限制条数
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Python 基础起步 (十) 什么叫函数?
  • STAR法则
  • 从重复到重用
  • 开发基于以太坊智能合约的DApp
  • 力扣(LeetCode)22
  • 软件开发学习的5大技巧,你知道吗?
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #include到底该写在哪
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (力扣)循环队列的实现与详解(C语言)
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (原創) 未来三学期想要修的课 (日記)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)c++ std::pair 与 std::make
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .net 7 上传文件踩坑
  • .NET Core Web APi类库如何内嵌运行?
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net core 管理用户机密
  • .net 获取url的方法
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法