python小游戏——骰子猜大小

news2024/11/14 22:58:26

❄️作者介绍:奇妙的大歪❄️

🎀个人名言:但行前路,不负韶华!🎀

🐽个人简介:云计算网络运维专业人员🐽

前言

       我们已经基本学完了,逻辑判断和循环的用法,现在开始做一点有意思的事情:设计一个小游戏猜大小。

   

 

  一. 在此之前,还是先行补充一些必要的知识。

       首先,创建一个列表,放入数字,再使用 sum()函数对列表中所有整数求和,然后打印:

a_list = [1,2,3]
print(sum(a_list))

       结果是6 ,这一个应该很好理解。

       接着,Python 中最方便的地方是有很多强大的库支持,现在我们导入一个random的内置库,然后使用它生成随机数:

import random
point1 = random.randrange(1,7)
point2 = random.randrange(1,7)
point3 = random.randrange(1,7)
print(point1,point2,point3)

       结果就不展示了,因为每次打印结果肯定是不一样的,其中random 中的 randrange 方法使用起来就像是range 函数一样,两个参数即可限定随机数范围。
       在正式开始创建函数之前,我们先把游戏规则细化一下:
       游戏开始,首先玩家选择 Big or Small(押大小),选择完成后开始摇三个骰子计算总值,11 <= 总值 <=18 为“大,3<= 总值 <= 10 为“小”。然后告诉玩家猜对或是猜错的结果。看起来就像是这样:

 

<<<<< GAME STARTS! >>>>>
Big or Small:Big
<<<<< ROLE THE DICE!>>>>>
The points are [2, 6, 3] You Lose!

       好,现在我们就可以开始来制作下游戏了!

       我们先来梳理一下这个小游戏的程序设计思路

       首先,需要让程序知道如何摇骰子,我们需要构建一个摇骰子的函数。这里面有两个关键点,一是需要摇3个骰子,每个骰子都生成1~6的随机数,你需要考虑一下,用什么方式可以实现依次摇3个骰子,这是我们在这一章里面学到的知识点;二是创建一个列表,把摇骰子的结果存储在列表里面,并且每局游戏都更换结果,也就是说每局游戏开始前列表都被清空一次,这里也需要好好考虑下用什么方式实现。
       其次,我们摇出来的结果是3个骰子分别的点数,需要把点数转换为“大”或者“小”,其中“大”的点数范围是11<=总值<=18,“小”的点数范围是3<=总值 <=10。
       最后,让用户猜大小,如果猜对了就告诉用户赢的结果,如果猜错了就告诉用户输的结果。
       只要你掌握了本章的内容,这个小游戏的编程过程并不困难。如果你决心掌握编程这种魔法,实际上最需要的是,发展出设计与分解事物的思路。所谓逻辑关系就是不同事物之间的关联性,它们以何种方式连接、作用,又在什么边界条件下能实现转换或互斥。与其说是编程有趣,倒不如说是编程引发的这种思考给开发者带来了乐趣。

       有思路了吗?先试试自己动手做吧。

       首先,我们先来构造可以摇骰子的函数roll_dice。这个函数其实并不需要输入任何参数,调用后会返回储存着摇出来三个点数结果的列表。

 import random
 def roll_dice(numbers=3, points=None): 
 print('<<<<< ROLL THE DICE! >>>>>') 
 if points is None: 
 points = [] 
 while numbers > 0: 
 point = random.randrange(1,7) 
 points.append(point) 
 numbers = numbers - 1 
 return points

       第2行:创建函数,设定两个默认参数作为可选,numbers-一骰子数量, points-三个筛子的点数的列表;
       第3行:告知用户开始摇骰子;
       第4~5行:如果参数中并未指定 points,那么为points创建空的列表;
       第6~9行:摇三次骰子,每摇一次numbers 就减1,直至小于等于0时,循环停止;
       第10行:返回结果的列表。
接着,我们再用一个函数来将点数转化成大小,并使用if 语句来定义什么是“大”,什么是“小”:

 def roll_result(total): 
 isBig = 11 <= total <=18 
 isSmall = 3 <= total <=10 
 if isBig: 
 return 'Big' 
 elif isSmall: 
 return 'Small'

       第1行:创建函数,其中必要的参数是骰子的总点数;第2~3行:设定“大”与“小”的判断标准;
       第4~7行:在不同的条件下返回不同的结果。

       最后,创建一个开始游戏的函数,让用户输入猜大小,并且定义什么是猜对,什么是猜错,并输出对应的输赢维结果。 第1行:创建函数,并不需要什么特殊参数;第2行:告知用户游戏开始;

 def start_game():
 print('<<<<< GAME STARTS! >>>>>')
 choices = ['Big','Small']
 your_choice = input('Big or Small :')
 if your_choice in choices:
 points = roll_dice()
 total = sum(points)
 youWin = your_choice == roll_result(total)
 if youWin:
 print('The points are',points,'You win !') 
 else:
 print('The points are',points,'You lose !') 
 else:
 print('Invalid Words')
 start_game()
 start_game()

      第3行:规定什么是正确的输入;
      第4行:将用户输入的字符串储存在your_choice中;
      第5、13~15行:如果符合输入规范则往下进行,不符合则告知用户并重新开始;

      第6行:调用 roll_dice函数,将返回的列表命名为 points;

      第7行:点数求和;
      第8行:设定胜利的条件--你所选的结果和计算机生成的结果是一致的:

      第9~12行:成立则告知胜利,反之,告知失败;

      第16行:调用函数,使程序运行。

      完成这个小游戏之后,你就可以试着和自己设计的程序玩猜大小了。同时你也掌握了循环和条件判断混用的方法,初步具备了设计更复杂的程序的能力了。

🎀看都看到这里啦留个三连再走吧!!你们的支持就是我的动力!!!🎀🎀🎀

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

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

相关文章

Maven历史版本的下载

Maven历史版本的下载 打开Maven官网https://maven.apache.org/ 点击Download 点击Maven 3 archives

持续优化 XView 性能,大促弹窗搭投实践 | 京东云技术团队

背景 618 大促来了&#xff0c;对于业务团队来说&#xff0c;最重要的事情莫过于各种大促营销。如会场、直播带货、频道内营销等等。而弹窗作为一个极其重要的强触达营销工具&#xff0c;通常用来渲染大促氛围、引流主会场、以及通过频道活动来提升频道复访等。因此&#xff0…

Apache JMeter配置步骤压力测试实例

一. 安装环境&#xff1a;................................................................................................................ 2 二&#xff0e;安装步骤&#xff1a;...................................................................................…

QGis出图

工程——新建打印布局。 水平垂直参考线的妙用&#xff0c;很好用。 【【QGIS出图教程】免费软件&#xff01;地理科研论文制图&#xff0c;出研究区位图&#xff0c;比Arcgis出图好使】

快速入门SringCloud

认识微服务 微服务是一种经过良好架构设计的分布式架构方案&#xff0c;微服务的特征有&#xff1a; 单一职责&#xff1a;微服务拆分粒度小&#xff0c;每一个服务都对应唯一的业务能力&#xff0c;做到单一职责&#xff0c;避免重复开发面向服务&#xff1a;微服务对外暴露…

linux 资源包安装详细教程

linux 资源包安装详细教程 一、离线下载安装1.1 下载1.2 安装1.3 错误&#xff1a;依赖检测失败 - 解决方案1.4 查看安装的包情况 二、在线安装 一、离线下载安装 1.1 下载 点击进入网页&#xff1a;linux资源包下载链接&#xff1a;pkgs.org在搜索栏输入需要的包&#xff0c…

d3dcompiler_47.dll丢失怎么解决(解决方案)

d3dcompiler_47.dll在Windows操作系统和 DirectX应用程序中使用此 DLL 文件,包括游戏&#xff0c;图形处理软件&#xff0c;CAD软件和其他3D应用程序中。如果电脑提示“由于找不到d3dcompiler_47.dll&#xff0c;无法继续执行此代码”&#xff0c;“d3dcompiler_47.dll缺失”&a…

C#多语言切换

第一步建立工程 第二步&#xff1a;拖拽控件 第三步选择窗体 第四步修改窗体localizable 属性为 true 如下图 第五步 修改language 属性 如下图 第六步&#xff1a;修改各个控件的字符名称 会出现下面的资源文件&#xff08;注意之前是没有资源文件的&#xff09; 第七步&…

Druid 数据库密码加密-代码详解

这次来详细说下 Druid 数据库密码加密-代码详解 第一种方法使用原生加解密 首先需要使用druid的密码加密功能加密密码 > 找到druid jar文件地址 执行 加密命令 java -cp druid-1.2.10.jar com.alibaba.druid.filter.config.ConfigTools you_password 会得到以下信息 priva…

回顾 | Learn From Microsoft Build Ⅱ:Data

点击蓝字 关注我们 编辑&#xff1a;Alan Wang 排版&#xff1a;Rani Sun 微软 Reactor 为帮助广开发者&#xff0c;技术爱好者&#xff0c;更好的学习 .NET Core, C#, Python&#xff0c;数据科学&#xff0c;机器学习&#xff0c;AI&#xff0c;区块链, IoT 等技术&#xff0…

动态隐藏显示底部Tab栏

方式1 路由源信息 方式2 css样式 css功能&#xff1a;让盒子盖住整个页面 给div.city添加.page-cover的类&#xff08;让div.city盖住页面的tabbar&#xff09; /* 让盒子盖住整个页面 */ .page-cover {position: relative;z-index: 2;height: 100vh;background-color: #fff;…

计算机组成原理(期末或考研备考)-计算机系统概述重点

1.1计算机发展历程 1946第一台电子数字计算机(ENIAC)第一代计算机&#xff08;1946-1957&#xff09;-- 电子管&#xff1b;体积大&#xff0c;容量小&#xff0c;成本高&#xff0c;速度慢。第二代计算机&#xff08;1958-1964&#xff09;-- 晶体管&#xff1b;运算速度提升…

java之路—— SpringMVC的基本详解

文章目录 前言一、 核心的组件二、基本实现流程三、MVC的基本配置使用 前言 Spring MVC是一个用于构建Web应用程序的基于MVC&#xff08;Model-View-Controller&#xff09;设计模式的框架。 它是Spring Framework的一部分&#xff0c;提供了一种灵活、可扩展且功能强大的方式…

Android APT 系列 (三):APT 技术探究

APT 介绍 什么是 APT ? APT 全称 Annotation Processing Tool&#xff0c;翻译过来即注解处理器。引用官方一段对 APT 的介绍&#xff1a;APT 是一种处理注释的工具, 它对源代码文件进行检测找出其中的注解&#xff0c;并使用注解进行额外的处理。 APT 有什么用&#xff1f;…

基于Java+Swing实现推箱子游戏

基于JavaSwing实现推箱子游戏 一、系统介绍二、功能展示三、其他系统四、获取源码 一、系统介绍 基于JAVA的推箱子游戏系统主要用于实现游戏推箱子功能&#xff0c;提供多种不同难度的关卡。本系统结构如下&#xff1a; &#xff08;1&#xff09;初始化模块: 该模块包括屏幕初…

如何用 ChatGPT 和你的卡片笔记对话?开源应用 Quivr 尝试

卡片 我 非常喜欢使用卡片笔记。其优点明显&#xff0c;例如能显著减轻写作压力。在你面对空白屏幕时&#xff0c;写一篇文章的压力可能会很大&#xff0c;而随时三言两语记录卡片笔记则显得更为轻松。由于笔记以卡片形式存在&#xff0c;可以进行大量重组复用&#xff0c;对于…

基于SpringBoot+vue的音乐网站与分享平台设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

分布式理论和一致性算法详解

1、什么是分布式系统 分布式系统是一个硬件或软件组成分布在不同的网络计算机上&#xff0c;彼此之间仅仅通过消息传递进行通信和协调的系统 2、分布式系统的特征 分布性 分布式系统的多台计算机都会在空间上随意分布的&#xff0c;同时&#xff0c;机器的分布情况也会随时变动…

【详细分析】thinkphp反序列化漏洞

文章目录 配置xdebug反序列化漏洞利用链详细分析poc1&#xff08;任意文件删除&#xff09;测试pocpoc2&#xff08;任意命令执行&#xff09;poc3&#xff08;任意命令执行&#xff09; 补充代码基础函数trait关键字应用案例优先级多trait 配置xdebug php.ini [Xdebug] zend…

聊聊我在店铺开放域做性能优化的体会

我们新推出大淘宝技术年度特刊《长期主义&#xff0c;往往从一些小事开始——工程师成长总结专题》&#xff0c;专题收录多位工程师真诚的心路历程与经验思考&#xff0c;覆盖终端、服务端、数据算法、技术质量等7大技术领域&#xff0c;欢迎一起沟通交流。 本文为此系列第五篇…