【Python】Yahtzee(掷骰子游戏)模拟程序【独一无二】

简介: 【Python】Yahtzee(掷骰子游戏)模拟程序【独一无二】


👉博__主👈:米码收割机

👉技__能👈:C++/Python语言

👉公众号👈:测试开发自动化【获取源码+商业合作】

👉荣__誉👈:阿里云博客专家博主、51CTO技术博主

👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。



一、原文要求

Yahtzee Game Simulation. Imagine you have been tasked with extending an existing piece of software that was abandoned by its previous programmer. The program compiles and runs. It does not yet play a game of Yahtzee

between to human players. There are many helper methods to code to detect dice states such as three of a kind, four of a kind, full-house, small and large straights, and Yahtzee (all five dice the same). You have been tasked to make use of the existing code as much as possible. You will need to design the score sheet and be able to display it to the players and keep track of each player’s turn. You must implement it with the parallel list structures as given. You may add other lists to manage the score sheets. The main game loop must work to allow the users to play the game again.

Good luck!

Ministry Expectations

o Demonstrate the ability to use different data types, including arrays

o Demonstrate the ability to use subprograms

o Use proper code maintenance techniques

o Use a variety of problem-solving strategies

o Design algorithms according to specifications

o Apply a software development life-cycle model (design-code-test-repeat)

o Demonstrate an understanding of the software development process

Steps

  1. Run the code attached to this project: Unit4_Project_Yahtzee.py
  2. Understand the given skeleton program and how it works
  3. Plan your changes to the existing code – set milestones
  4. Generate flow-charts or pseudocode of your changes
  5. Use step-wise-refinement to test your code at each milestone
  6. Update your programmer’s journal at every stage
  7. Complete the Yahtzee project as a two human player game
  8. Ensure that existing code is preserved as much as possible
  9. Comment all internal blocks of code as required
  10. Submit your project file and programmer’s journal.


二、中文描述

描述了一个Yahtzee(掷骰子游戏)模拟程序的开发任务。你的任务是继续开发一个由前一名程序员遗弃的软件项目。虽然该程序能够编译和运行,但尚未实现两个人类玩家之间进行Yahtzee游戏的功能。项目中有许多用于检测骰子状态的辅助方法,例如三样、四样、满屋、小顺和大顺,以及Yahtzee(五个骰子都相同)。你需要尽量使用现有的代码,并设计记分表以显示给玩家并跟踪每个玩家的回合。你必须使用给定的并行列表结构来实现它。你可以添加其他列表来管理记分表。主游戏循环必须允许用户重新玩游戏。祝你好运!

期望

o 展示使用不同数据类型的能力,包括数组

o 展示使用子程序的能力

o 使用适当的代码维护技术

o 使用多种解决问题的策略

o 根据规格设计算法

o 应用软件开发生命周期模型(设计-编码-测试-重复)

o 展示对软件开发过程的理解

步骤

  1. 运行附加到这个项目的代码:Unit4_Project_Yahtzee.py
  2. 理解给定的骨架程序及其工作方式
  3. 计划对现有代码的更改 - 设置里程碑
  4. 生成你更改的流程图或伪代码
  5. 在每个里程碑处使用分步细化来测试你的代码
  6. 在每个阶段更新你的程序员日志
  7. 完成Yahtzee项目作为一个两个人类玩家的游戏
  8. 确保尽可能保留现有代码
  9. 根据需要注释所有内部代码块
  10. 提交你的项目文件和程序员日志。

三、代码详解

这个代码实现的游戏是一个简化版本的骰子游戏,其中包括两名玩家(标记为"A"和"B")。每位玩家都有一个得分表,该得分表有13个槽位。游戏的目标是通过掷骰子来填满这些得分槽位。

游戏流程:

  1. 开始游戏:首先,轮到玩家"A"。
  2. 掷骰子:每名玩家轮流掷5个骰子(存储在列表cup中)。系统会自动为当前玩家掷骰子并显示结果。
  3. 操作命令:在每个回合中,玩家有两次机会输入命令,这些命令包括:
  • sheet:查看当前玩家的得分表。
  • score 1-13:将当前骰子的总和储存在得分表的指定槽位(从1到13)。
  • rollDice:重新掷骰子(仅对没有被保留的骰子进行)。
  • displayDice:显示当前骰子的状态。
  • holdDie 1-5:保留一个指定位置(从1到5)的骰子。
  • releaseDie 1-5:释放一个指定位置(从1到5)的骰子。
  • help:显示可用命令列表。
  1. 轮换玩家:完成两次操作后,游戏切换到另一名玩家。
  2. 得分:玩家通过输入score 1-13来将当前骰子的总和记录到得分表的某个槽位。每个槽位只能被填充一次。
  3. 游戏结束条件:当两名玩家的得分表都被完全填满时,游戏结束。

注意

  • 每个骰子都有一个保留状态(held列表中的布尔值),表示玩家是否选择保留该骰子。被保留的骰子在下次掷骰子时不会改变。
  • 得分表(score_sheet_ascore_sheet_b)最初都是空的(即全为None)。当玩家选择一个槽位并记录得分时,该槽位会被填充。
  • 由于这是一个非常简化的版本,它没有实现像Yahtzee这样复杂的骰子游戏规则。所有得分都是基于当前骰子的总和。

这个游戏主要用于展示基本的掷骰子和得分机制,并没有高级的游戏逻辑或复杂的得分规则。它也没有错误处理或数据验证的全面实现。希望这能清晰地解释游戏的整体规则!

玩家可以输入以下命令:

  • sheet:查看得分表。
  • score 1-13:将当前骰子的总和作为得分储存到指定的得分槽(1-13)中。
  • rollDice:重新掷骰子。
  • displayDice:显示当前骰子的状态。
  • holdDie 1-5:保留指定位置(1-5)的骰子。
  • releaseDie 1-5:释放指定位置(1-5)的骰子。
  • help:查看可用的命令列表。

1. A掷骰子

使用score 1 将总和计入得分槽中,并使用sheet 查看。

使用 rollDice,重新掷骰子 并使用 displayDice 显示当前骰子的状态。

2. B掷骰子

使用holdDie 1保留指定位置1的骰子。score 1 将总和计入得分槽中,并使用sheet 查看。


四、代码展示

代码框架展示:

# End of Unit 4: Yahtzee Project
#
# Purpose: to create a two player text based game.
# 1. Complete the code -alone- using the template below.
# 2. Do not 're-write' the project, make use of it.
# 3. Rules of the Game: https://en.wikipedia.org/wiki/Yahtzee
#    A sample graphical game example to play: https://cardgames.io/yahtzee/
# 4. Two Human players play a game of Yahtzee together 
# 5. The game ends when both players fill their score sheet
# 6. A turn consists of one, two or three dice rolls.
#    A turn ends when (a) a player makes the third roll and scores
#    or (b) when a player stops rolling to record the dice on the score sheet.
#    The score-sheet consists of 13 slots.  Follow the rules for
#    filling in the score sheet.  
# 7. Note: you must create a Command Line Interface for your game
# 8. commands must include:
#    sheet - displaying a player's full score sheet
#    score (1-13) - selecting a spot to score the current dice
#    rollDice() - rolling all free dice
#    displayDice() - showing the player their current dice.
#    holdDie (1-5) - a method of holding / keeping dice not to be rolled
#    releaseDie(1-5) - a method of releasing dice so they can be rolled.
#    help() - prints out a list of all valid commands for your CLI 
# 9. Follow the Major Programming Rubric - Keep a Journal!
# 0. REMOVE TEMPLATE INSTRUCTIONS - REPLACE WITH YOUR COMMENTS
#
# Author: YOUR NAME HERE
#
# Date: DATE SUBMITTED HERE
#
# Setup the initial environment 
import random
# a dictionary of dice - a data structure to make the game pretty
# - in Thonny increase font size under view to see them properly
dice = { 1 : "⚀",
         2 : "⚁",
         3 : "⚂",
         4 : "⚃",
         5 : "⚄",
         6 : "⚅"
         }
# the dice cup which hold the dice (a list of dice) - starting with impossible values
# the parallel array boolean flags required to hold specific dice 
cup = [0,0,0,0,0]
held = [False,False,False,False,False]
# 。。。。。。。。。。。
# 。。。。。。。。。。。
# 。。。。。。。。。。。
# Your Main Program Here -- helpful hints follow and the methods given are simply tested below
# you'll need a game loop
# you'll need two score sheets, one for each player
# you'll need to keep track of which player (a or b) is playing.
# you'll need to keep track of which slots on the score sheet are still available for each player
# you'll need to protect the score sheet from incorrect selections
print("""\
 __   __    _   _              
 \ \ / /_ _| |_| |_ ______ ___ 
  \ V / _` | ' \  _|_ / -_) -_)
   |_|\__,_|_||_\__/__\___\___|
                               """)
rollDice()
displayDice()
holdDie(1)  # simulating a player holding onto dice
holdDie(2)
rollDice()
displayDice()
releaseDie(1) # simulating a player making new holding pattern choices
holdDie(5)
rollDice()
displayDice()
print('chance score is: {0}'.format(chanceScore()))

完整代码截图:


相关文章
|
1月前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
1月前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
1天前
|
安全 API C语言
Python程序的安全逆向(关于我的OPENAI的APIkey是如何被盗的)
本文介绍了如何使用C语言编写一个简单的文件加解密程序,并讨论了如何为编译后的软件添加图标。此外,文章还探讨了Python的.pyc、.pyd等文件的原理,以及如何生成和使用.pyd文件来增强代码的安全性。通过视频和教程,作者详细讲解了生成.pyd文件的过程,并分享了逆向分析.pyd文件的方法。最后,文章提到可以通过定制Python解释器来进一步保护源代码。
22 6
|
13天前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
26天前
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
55 9
|
24天前
|
存储 人工智能 数据挖掘
Python编程入门:打造你的第一个程序
本文旨在为初学者提供Python编程的初步指导,通过介绍Python语言的基础概念、开发环境的搭建以及一个简单的代码示例,帮助读者快速入门。文章将引导你理解编程思维,学会如何编写、运行和调试Python代码,从而开启编程之旅。
36 2
|
26天前
|
Python
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
43 5
|
25天前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
32 1
|
1月前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
1月前
|
存储 机器学习/深度学习 搜索推荐
Python编程入门:从零开始构建你的第一个程序
【10月更文挑战第32天】本文旨在通过浅显易懂的方式引导编程新手进入Python的世界。我们将一起探索Python的基础语法,并通过实例学习如何构建一个简单的程序。文章将不直接展示代码,而是鼓励读者在阅读过程中自行尝试编写,以加深理解和记忆。无论你是编程初学者还是希望巩固基础知识的开发者,这篇文章都将是你的良师益友。让我们开始吧!