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

【Python】取火柴小游戏(巴什博弈)

火柴游戏:Python编程示例

当我们想要玩一个简单而有趣的游戏,同时又想锻炼自己的编程技能时,一个经典的选择就是火柴游戏。这个游戏的规则很简单:有一堆火柴,每次可以拿走1到6根,两名玩家轮流取火柴,拿到最后一根的玩家获胜。在本篇博客中,我们将使用Python来模拟和玩这个火柴游戏。

游戏规则

游戏规则非常简单:

  1. 有一堆火柴,初始数量可以是任意值。
  2. 两名玩家轮流行动,一位是人类玩家,另一位是电脑。
  3. 每位玩家可以选择拿走1到6根火柴,但不能拿走超过剩余火柴数量的火柴。
  4. 游戏继续,直到只剩下一根火柴。
  5. 拿到最后一根火柴的玩家获胜。

Python实现

要实现这个游戏,我们可以使用Python编程语言。首先,我们需要初始化游戏的初始火柴数量,然后通过编写代码来模拟玩家和电脑的行动。以下是游戏的Python代码示例:

import randomtotal = random.randint(60, 100)
print('总共 ', total, ' 根火柴')winner = 0while winner == 0:player = int(input('请输入你要取的火柴数:'))while player < 0 or player > 6 or total - player < 0:player = int(input('请重新输入你要取的火柴数:'))total -= playerprint('玩家选了 ', player , ' 根火柴')print('现在还剩 ', total , ' 根火柴')if total == 0:winner = 1breaknpc = total % 7 # 取的火柴数需要把对方变成7的倍数才对自己有利if npc == 0:npc = random.randint(1, 6)  # npc 无法必赢局,1-6随便选一个total -= npcprint('npc 选了 ', npc , ' 根火柴')print('现在还剩 ', total , ' 根火柴')if total == 0:winner = 2breakif winner == 1:print("你赢了")
else:print("你输了")

Python实现(GUI版)

可采用tkinter实现GUI版:

import random
import tkinter as tk
from tkinter import messageboxclass BashGame:def __init__(self, root: tk.Tk):self.root = rootself.root.title("取火柴")self.player = 0self.npc = 0self.piles = total = random.randint(60, 100)  # 初始化堆的物品数量self.create_gui()def create_gui(self):self.label0 = tk.Label(self.root, text=f"本轮你拿走的火柴数量: {self.player}")self.label0.pack(pady=10)self.label1 = tk.Label(self.root, text=f"本轮电脑拿走的火柴数量: {self.npc}")self.label1.pack(pady=10)self.label2 = tk.Label(self.root, text=f"当前火柴数量: {self.piles}")self.label2.pack(pady=10)self.entry = tk.Entry(self.root, width=40)self.entry.pack()self.button = tk.Button(self.root, text="拿走物品", command=self.take_items)self.button.pack()self.root.mainloop()def take_items(self):try:num_to_take = int(self.entry.get())if num_to_take < 1 or num_to_take > 6:messagebox.showerror("错误", "只能拿走1到6根火柴")returnif num_to_take > self.piles:messagebox.showerror("错误", "没有足够的物品可供拿走")returnself.player = num_to_takeself.piles -= num_to_takeself.label0.config(text=f"本轮你拿走的火柴数量: {self.player}")self.label2.config(text=f"当前物品数量: {self.piles}")if self.piles == 0:messagebox.showinfo("游戏结束", "你赢了!")else:# 让电脑随机拿走物品computer_choice = self.piles % 7if computer_choice == 0:computer_choice = random.randint(1, 6)self.npc = computer_choiceself.piles -= computer_choiceself.label1.config(text=f"本轮电脑拿走的火柴数量: {self.npc}")self.label2.config(text=f"当前物品数量: {self.piles}")if self.piles == 0:messagebox.showinfo("游戏结束", "电脑赢了!")except ValueError:messagebox.showerror("错误", "请输入一个有效的数字")if __name__ == "__main__":root = tk.Tk()game = BashGame(root)

相关文章:

【Python】取火柴小游戏(巴什博弈)

火柴游戏&#xff1a;Python编程示例 当我们想要玩一个简单而有趣的游戏&#xff0c;同时又想锻炼自己的编程技能时&#xff0c;一个经典的选择就是火柴游戏。这个游戏的规则很简单&#xff1a;有一堆火柴&#xff0c;每次可以拿走1到6根&#xff0c;两名玩家轮流取火柴&#…...

030-第三代软件开发-密码输入框

第三代软件开发-密码输入框 文章目录 第三代软件开发-密码输入框项目介绍密码输入框总结一下 关键字&#xff1a; Qt、 Qml、 echoMode、 TextInput、 Image 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language…...

mysql读取文件

环境地址&#xff1a;phpMyAdmin LOAD DATA INFILE 任意文件读取漏洞 | VULNSPY 参考文章&#xff1a; mysql任意文件读取漏洞学习_BerL1n的博客-CSDN博客 从一道ctf题学习mysql任意文件读取漏洞 - 安全客&#xff0c;安全资讯平台 MYSQL 任意文件读取 小组CTF出题感想 - …...

CentOS(5)——rpm包和源码包区别

目录 一、简介 二、区别 ①包名称 ②概念 ③优缺点 ④安装位置的区别 ⑤安装位置不同带来的影响 ⑥卸载方式的不同 一、简介 最近在公司内网离线升级Git时&#xff0c;遇见两个概念&#xff0c;分别是使用rpm包安装git&#xff0c;另一个这是编译源码包安装git&#x…...

Golang 实现对配置文件加密

引言 在实际的应用中&#xff0c;配置文件通常包含了一些敏感的信息&#xff0c;如数据库密码、API密钥等。为了保护这些敏感信息不被恶意获取&#xff0c;我们可以对配置文件进行加密。本文将介绍如何使用Go语言实现对配置文件的加密。 场景 在这个场景中&#xff0c;我们将…...

MYSQL数字函数详解和实战(数字函数大全,内含示例)

MySQL提供了许多数字函数&#xff0c;用于对数字进行各种计算和处理。以下是一些常用的MySQL数字函数。 内容有点多&#xff0c;建议收藏以备后续用到查阅参考。 目录 一、SIGN 取数字的符号 二、ABS 取绝对值 三、COS 取余弦值 四、ACOS 取反余弦值 五、SIN 取正弦值 六…...

Linux系列讲解 —— VIM配置与美化

目录 1. Vim基本配置1.1 配置文件1.2 基本配置 2. 插件管理器Vundle2.1 下载Vundle2.2 在vimrc中添加Vundle的配置 3. Vundle的使用3.1 安装插件3.2 卸载插件 1. Vim基本配置 1.1 配置文件 vim的配置文件有两处&#xff0c;请根据实际情况选择修改哪个。 (1) 全局配置文件&am…...

FreeSWITCH 使用指北(2)-多段音频顺序播放的设置

文章目录 1. 多段音频顺序播放的设置 1. 多段音频顺序播放的设置 在 FreeSWITCH 中涉及到放音的 APP 有不少&#xff0c;比较典型的是播放录音文件的 playback 和 play_and_detect_speech 。这两个 APP 播放录音的功能都依赖于 switch_ivr_play_say.c#switch_ivr_play_file() …...

使用python爬虫语言调用有道翻译实现英中互译(2023实现)

使用python爬虫语言调用有道翻译实现英中互译(2023实现) 作者: 安静到无声 作者简介:人工智能和硬件设计博士生、CSDN与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇。 Thanks♪(・ω・)ノ 如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关…...

2024王道考研计算机组成原理——指令系统

零、本章概要 指令寻址&#xff1a;解决的是PC"1"的问题 数据寻址&#xff1a;使用寄存器/内存/结合 基址寻址&#xff1a;用于多道程序的并发执行 直接寻址&#xff1a;call 0x12345678 变址寻址&#xff1a;esi edi用于循环&#xff0c;因为使用直接寻址需要一堆…...

vscode中如何将cmd设置为默认终端

vscode中如何将cmd设置为默认终端&#xff1f;下面本篇文章给大家介绍一下vscode中设置默认终端为cmdPowerShelWSL等的方法&#xff0c;希望对需要的朋友有所协助&#xff01; 一、快捷键&#xff08;CtrlShiftP打开命令面板&#xff0c;输入select选择“SelectDefaultProfil …...

Unity UGUI 循环滑动列表实现思路及简单代码实现

前言&#xff1a; 自己之前其实比着书上实现过一个循环滑动列表&#xff0c;并且商业化到了项目里&#xff0c;上线后也在用。可后来怎么也想不起来细节&#xff0c;看着之前的代码也看不很懂。这次复习一下&#xff0c;希望真能理解它的本质&#xff0c;也记录一下&#xff0…...

贪心算法(1)--经典贪心算法

目录 一、活动安排问题 二、最优装载问题 三、分数背包问题 四、多机调度问题 一、活动安排问题 1、策略 活动安排问题&#xff1a;设有n个活动的集合E{1,2,...,n}&#xff0c;每个活动i都有一个使用该资源的起始时间和一个结束时间&#xff0c;且。如果选择了活动i则它在…...

Nginx负载均衡和备份和故障转移

如果你想要两台 Nginx 服务器配置访问同一个链接&#xff0c;通常意味着你可能想要以下几种配置&#xff1a; 负载均衡&#xff1a;两台 Nginx 服务器都工作&#xff0c;当访问者请求资源时&#xff0c;流量会在这两台服务器之间进行均衡分配。备份和故障转移&#xff1a;其中…...

Android-Framework 三方应用默认权限都不弹窗

代码位置&#xff1a;frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java -1853,10 1853,10 public class PackageManagerService extends IPackageManager.StubmPermissionCallback);}- final String packageName res.pkg.application…...

TX Text Control.NET For WPF 32.0 Crack

TX Text Control 支持VISUAL STUDIO 2022、.NET 5 和 .NET 6 支持 .NET WPF 应用程序的文档处理 将文档编辑、创建和 PDF 生成添加到您的 WPF 应用程序中。 视窗用户界面 功能齐全的文档编辑器 TX Text Control 是一款完全可编程的丰富编辑控件&#xff0c;它在专为 Visual Stu…...

使用Go语言测试Redis性能

1. 前言 Redis是一个高性能的键值存储数据库&#xff0c;常用于缓存、队列、排行榜等场景。在实际应用中&#xff0c;我们需要对Redis的性能进行测试&#xff0c;以便了解其在不同场景下的表现。本文将介绍如何使用Go语言测试Redis的性能。 2. 环境准备 在开始测试前&#x…...

【Javascript】运算符(赋值,算术,自增,自减)

目录 赋值 算术 单个变量&#xff1a; 多个变量&#xff1a; 在字符串&#xff0c;数组中充当连接符 自符串与字符串 数组与数组 数组与字符串 自增与自减 前置 自增 自减 后置 自增 自减 赋值 var a 1;算术 单个变量&#xff1a; var a 1;a 1;console.l…...

Redis数据类型——list类型数据的扩展操作

1.list阻塞式数据获取 2.list类型数据业务场景...

[论文笔记]NEZHA

引言 今天带来华为诺亚方舟实验室提出的论文NEZHA,题目是 针对中文中文语言理解神经网络上下文表示(NEural contextualiZed representation for CHinese lAnguage understanding),为了拼出哪吒。 预训练语言模型由于具有通过对大型语料库进行预训练来捕获文本中深层上下文信…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...