热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python游戏编程(一)“猜数字”游戏

有人说任务驱动式的学习方式会更有效率,有人说兴趣是最好的老师。所以我打算调试前人设计好的一些小游戏,来做为自己Python入门的教材。下面是对现有代

有人说任务驱动式的学习方式会更有效率,有人说兴趣是最好的老师。

所以我打算调试前人设计好的一些小游戏,来做为自己Python入门的教材。

下面是对现有代码的分析,在分析每一行代码在游戏中发挥的作用的同时,分析代码中涉及到的编程语法。

通过设计一个小的游戏来学习Python编程语言,首先以最基础的“猜数字”游戏入手,详细的介绍每一行代码,并讲解代码的其他功能和属性,在编写游戏的过程中学会编程。


(一)源代码:

#This is a Guess The Number game.
import random#赋值过程自动创建变量
guessesTaken = 0print("Hello! What is your name?")
myName = input()number = random.randint(1, 20)
print("Well," &#43; myName &#43; ", I an thinking of a number between 1 and 20.")for i in range(6):print("Take a guess.")guess &#61; input()guess &#61; int(guess)if guess < number:print("Your guess is too low.")if guess > number:print("Your guess is too high.")if guess &#61;&#61; number:break #跳出for循环if guess &#61;&#61; number:guessesTaken &#61; iguessesTaken &#61; str(guessesTaken)print("Good job," &#43; myName &#43; "Your guessed my number in " &#43; guessesTaken &#43;" guesses!")if guess !&#61; number:number &#61; str(number)print("Nope. The number I was thinking of was" &#43; number &#43;".")

运行结果&#xff1a;

runfile(&#39;D:/Z/Python/Python游戏编程/游戏编程代码/猜数字.py&#39;, wdir&#61;&#39;D:/Z/Python/Python游戏编程/游戏编程代码&#39;)
Hello! What is your name?低头写作业
Well,低头写作业, I an thinking of a number between 1 and 20.
Take a guess.13
Your guess is too low.
Take a guess.16
Your guess is too low.
Take a guess.18
Your guess is too high.
Take a guess.177
Your guess is too high.
Take a guess.17
Good job,低头写作业Your guessed my number in 4 guesses!

这个游戏用到的都是最基本的语法。下面进行详细的分析&#xff1a;


&#xff08;二&#xff09;详细分析&#xff1a;

游戏主要内容&#xff1a;


  • import语句&#xff1b;
  • 模块&#xff1b;
  • randint&#xff08;&#xff09;函数&#xff1b;
  • for语句
  • 语句块
  • str()函数、int()函数、float()函数&#xff1b;
  • 布尔类型&#xff1b;
  • 比较操作符&#xff1b;
  • &#61;和&#61;&#61;的区别&#xff1b;
  • if语句&#xff1b;

首先导入random模块以便程序可以调用random.randint()函数&#xff0c;该函数将会产生一个随机数&#xff0c;供用户进行猜测。

#导入random模块
import random

导入random模块&#xff0c;以便程序可以调用random.randint()函数&#xff0c;该函数将会产生一个随机数&#xff0c;供用户进行猜测。

import语句&#xff1a;
语句是执行某些动作的指令&#xff0c;不像表达式那样会计算一个值。
例如赋值语句&#xff1a;把一个值存储到一个变量中。

Python包含许多内建的函数&#xff0c;有些储存在模块中&#xff0c;使用import语句导入我们的程序中后&#xff0c;就可以使用这些函数了。

guessesTaken &#61; 0

新建变量用于保存玩家猜测过的次数。Python赋值后直接创建变量。

print("Hello! What is your name?")
myName &#61; input()

调用print&#xff08;&#xff09;函数&#xff0c;把传递给它的字符串参数显示到屏幕上。函数就像是程序中的一个小程序。input&#xff08;&#xff09;函数用于获取玩家的姓名&#xff0c;注意input&#xff08;&#xff09;函数传递玩家输入的字符串。

number &#61; random.randint(1, 20)

调用random模块中的randint&#xff08;&#xff09;函数&#xff0c;产生一个随机数&#xff0c;赋值给变量number。代码中的randint&#xff08;1&#xff0c; 20&#xff09;函数会返回一个1到20之间的整数并赋值给变量number。

print("Well," &#43; myName &#43; ", I an thinking of a number between 1 and 20.")

调用print&#xff08;&#xff09;函数根据玩家姓名来欢迎玩家&#xff0c;并且告诉玩家猜测数字的范围。

for i in range(6):print("Take a guess.")guess &#61; input()guess &#61; int(guess)if guess < number:print("Your guess is too low.")if guess > number:print("Your guess is too high.")if guess &#61;&#61; number:break #跳出for循环

for循环&#xff1a;

通过for循环一遍一遍的执行代码&#xff0c;该段代码会重复执行6次。for语句以关键字for打头&#xff0c;后面跟着一个新的变量、in关键字、对range&#xff08;&#xff09;函数的一次调用&#xff0c;range&#xff08;&#xff09;函数指定了循环应该执行的次数&#xff0c;此外还包括一个冒号。

break语句立刻跳出for循环语句块&#xff0c;跳到for循环结束后的第一行代码。

for语句表示一个循环的开始&#xff0c;循环可以重复的执行相同的代码。当程序执行到一条for语句时&#xff0c;它会进入for语句后面的代码块&#xff0c;运行完所有的代码块之后&#xff0c;执行会回到该语句块的顶部&#xff0c;并再次运行所有的代码。通过循环的每一次执行&#xff0c;叫做一次迭代。可以把for语句理解为&#xff1a;“将如下的语句块中的代码执行一定的次数”。

组织语句块&#xff1a;

Python用语句缩进来确定流程控制结构不同代码块&#xff08;即语句体&#xff09;的边界。在一个语句块中的每一行代码都有和语句块第一行代码相同的缩进值&#xff0c;通过改变语句的缩进值来开始和结束一个新的语句块&#xff0c;语句块中可以嵌套语句块。在代码行之后&#xff0c;拥有相同或者更多的缩进值的任何代码行&#xff0c;都被认为是该语句块的一部分。

guess &#61; int(guess)

int&#xff08;&#xff09;函数接受一个参数&#xff0c;返回参数的整数形式。尽管可以传递一个字符串给int&#xff08;&#xff09;函数&#xff0c;但是不能传递任意的字符串&#xff0c;传递给int&#xff08;&#xff09;的字符串&#xff0c;必须是由数字组成的。
类似的&#xff0c;float&#xff08;&#xff09;和str&#xff08;&#xff09;函数分别返回浮点数和字符串类型。
使用int&#xff08;&#xff09;、float&#xff08;&#xff09;和str&#xff08;&#xff09;函数&#xff0c;可以接受一种数据类型的值&#xff0c;而返回另一种数据类型的值。

数据类型

Python中的每一个值&#xff0c;都属于一种数据类型。Python数据类型包括整数型、浮点型、字符串和布尔数据类型。布尔数据类型只有两个值&#xff1a;True或者False&#xff0c;这两个值的首字母必须大写&#xff0c;其余部分为小写。

比较操作符

比较操作符比较两个值&#xff0c;并且会得到一个True或者Flase的布尔值。

在代码中理解比较操作符

a &#61; 21
b &#61; 10
c &#61; 0if ( a &#61;&#61; b ):print ("1 - a 等于 b")
else:print ("1 - a 不等于 b")if ( a !&#61; b ):print ("2 - a 不等于 b")
else:print ("2 - a 等于 b")if ( a < b ):print ("3 - a 小于 b")
else:print ("3 - a 大于等于 b")if ( a > b ):print ("4 - a 大于 b")
else:print ("4 - a 小于等于 b")# 修改变量 a 和 b 的值
a &#61; 5;
b &#61; 20;
if ( a <&#61; b ):print ("5 - a 小于等于 b")
else:print ("5 - a 大于 b")if ( b >&#61; a ):print ("6 - b 大于等于 a")
else:print ("6 - b 小于 a")

输出结果

1 - a 不等于 b
2 - a 不等于 b
3 - a 大于等于 b
4 - a 大于 b
5 - a 小于等于 b
6 - b 大于等于 a

Python运算符还包括算数运算符、赋值运算符、逻辑运算符等。

其中“等号”赋值操作符&#xff08;&#61;&#xff09;用于赋值语句&#xff0c;用来把值储存到变量中&#xff1b;“等于”比较操作符号&#xff08;&#61;&#61;&#xff09;用于表达式&#xff0c;用来判断两个值是否相等。

if语句
if语句以关键字if打头、后面跟着条件和一个冒号&#xff0c;其中条件只是结果为True或者False的表达式的另一种叫法而已。if语句后面条件为True&#xff0c;则执行冒号后面的代码块&#xff0c;Flase则会跳过if语句块中的代码。

if guess &#61;&#61; number:guessesTaken &#61; iguessesTaken &#61; str(guessesTaken)print("Good job," &#43; myName &#43; "Your guessed my number in " &#43; guessesTaken &#43;" guesses!")if guess !&#61; number:number &#61; str(number)print("Nope. The number I was thinking of was" &#43; number &#43;".")

只有字符串值才可以和其他字符串连接&#xff0c;如果把一个整数和一个字符串连接会报错。

这个游戏就介绍到这里。

疫情爆发&#xff0c;也只能待在家里&#xff0c;延迟开学。也是要停课不停学。在开学之前争取每天更新一篇&#xff0c;总结之前学习的内容&#xff0c;也继续学习新的内容。

参考&#xff1a;


  1. 菜鸟教程
  2. http://inventwithpython.com/invent4thed/chapter3.html
  3. 《Python游戏编程快速上手》第四版&#xff0c;AI Sweigart著&#xff0c;李强 译

推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
  • 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList优于LinkedList,因为Ar ... [详细]
  • 很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
author-avatar
小白学习哈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有