用Python设计一个经典小游戏


Posted in Python onMay 15, 2017

本文主要介绍如何用Python设计一个经典小游戏:猜大小。

在这个游戏中,将用到前面我介绍过的所有内容:变量的使用、参数传递、函数设计、条件控制和循环等,做个整体的总结和复习。

游戏规则:

初始本金是1000元,默认赔率是1倍,赢了,获得一倍金额,输了,扣除1倍金额。

  1. 玩家选择下注,押大或押小;
  2. 输入下注金额;
  3. 摇3个骰子,11≤骰子总数≤18为大,3≤骰子总数≤10为小;
  4. 如果赢了,获得1倍金额,输了,扣除1倍金额,本金为0时,游戏结束。

程序运行结果是这样的:

用Python设计一个经典小游戏

现在,我们来梳理下思路。

  1. 我们先让程序知道如何摇骰子;
  2. 让程序知道什么是大,什么是小;
  3. 用户开始玩游戏,如果猜对,赢钱;猜错,输钱;输完后,游戏结束。

梳理清楚思路后,接下来开始敲代码。

摇骰子:

定义roll_dice函数,3个骰子,循环次数numbers为3,骰子点数points初始值为空,这里的参数传递用到的是之前讲到的关键词参数传递。

随机数生成用import random来实现。Python中最方便的就是有很多强大的库支持,现在我们可以直接导入一个random的内置库,用它来生成随机数。如:

1 import random
2 point = random.randrange(1,7)
3 # random.randrange(1,7)生成1-6的随机数
4 print(point)

print(point)后可以看到打印出的随机数,每次运行结果都是随机的。

接下来我们看下摇骰子这部分的完整代码:

import random
def roll_dice(numbers = 3,points = None):
 print('----- 摇骰子 -----')
 if points is None:
  points = []
  # points为空列表,后续可以插入新值到该列表
 while numbers > 0:
  point = random.randrange(1,7)
  points.append(point)
  # 用append()方法将point数值插入points列表中
  numbers = numbers - 1
  # 完成一次,numbers减1,当小于等于0时不再执行该循环
 return points

定大小:

11≤骰子总数≤18为大,3≤骰子总数≤10为小,代码如下:

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

玩游戏:

初始本金1000元,默认赔率1倍;赢了,获得一倍金额,输了,扣除1倍金额;本金为0时,游戏结束。

def start_game():
 your_money = 1000
 while your_money > 0:
  print('----- 游戏开始 -----')
  choices = ['大','小']
  # choices赋值为大和小,用户需输入二者之一为正确
  your_choice = input('请下注,大 or 小:')
  your_bet = input('下注金额:')
  if your_choice in choices:
   points = roll_dice()
   # 调用roll_dice函数
   total = sum(points)
   # sum为相加,将3个骰子的结果相加
   youWin = your_choice == roll_result(total)
   if youWin:
    print('骰子点数:',points)
    print('恭喜,你赢了 {} 元,你现在有 {} 元本金'.format(your_bet,your_money + int(your_bet)))
    # your_bet是字符串格式,这里需要转化为int类型进行计算
    your_money = your_money + int(your_bet)
    # 最新本金
   else:
    print('骰子点数:',points)
    print('很遗憾,你输了 {} 元,你现在有 {} 元本金'.format(your_bet, your_money - int(your_bet)))
    your_money = your_money - int(your_bet)
  else:
   print('格式有误,请重新输入')
   # 如果输入的不是choices列表中的大或小,则为格式有误
 else:
  print('游戏结束')
start_game()

到这里,我们就完成了该游戏三大部分的设计,大家一定要仔细思考,梳理设计思路,动手敲出代码才好。

最后,附【猜大小】游戏的完整代码

import random

def roll_dice(numbers = 3,points = None):
 print('----- 摇骰子 -----')
 if points is None:
  points = []
 while numbers > 0:
  point = random.randrange(1,7)
  points.append(point)
  numbers = numbers - 1
 return points

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

def start_game():
 your_money = 1000
 while your_money > 0:
  print('----- 游戏开始 -----')
  choices = ['大','小']
  your_choice = input('请下注,大 or 小:')
  your_bet = input('下注金额:')
  if your_choice in choices:
   points = roll_dice()
   total = sum(points)
   youWin = your_choice == roll_result(total)
   if youWin:
    print('骰子点数:',points)
    print('恭喜,你赢了 {} 元,你现在有 {} 元本金'.format(your_bet,your_money + int(your_bet)))
    your_money = your_money + int(your_bet)
   else:
    print('骰子点数:',points)
    print('很遗憾,你输了 {} 元,你现在有 {} 元本金'.format(your_bet, your_money - int(your_bet)))
    your_money = your_money - int(your_bet)
  else:
   print('格式有误,请重新输入')
 else:
  print('游戏结束')

start_game()

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Python 相关文章推荐
python实现代码行数统计示例分享
Feb 10 Python
Python中的map、reduce和filter浅析
Apr 26 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
Mar 13 Python
python获取一组汉字拼音首字母的方法
Jul 01 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
使用python将大量数据导出到Excel中的小技巧分享
Jun 14 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
python绘制汉诺塔
Mar 01 Python
python 中的@运算符使用
May 26 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 Python
Python 对象中的数据类型
May 13 #Python
Python中matplotlib中文乱码解决办法
May 12 #Python
使用Python对Csv文件操作实例代码
May 12 #Python
python 读取excel文件生成sql文件实例详解
May 12 #Python
Python实现读取并保存文件的类
May 11 #Python
Python使用defaultdict读取文件各列的方法
May 11 #Python
python中nan与inf转为特定数字方法示例
May 11 #Python
You might like
探寻PHP脚本不报错的原因
2014/06/12 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
python中bisect模块用法实例
2014/09/25 Python
Python内置模块turtle绘图详解
2017/12/09 Python
python利用微信公众号实现报警功能
2018/06/10 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
Python中关于浮点数的冷知识
2019/09/22 Python
python框架flask表单实现详解
2019/11/04 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
上课说话检讨书大全
2014/01/22 职场文书
研讨会主持词
2014/04/02 职场文书
投资入股合作协议书
2014/10/28 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
Python中的min及返回最小值索引的操作
2021/05/10 Python
只用Python就可以制作的简单词云
2021/06/07 Python
Python实现打乒乓小游戏
2021/09/25 Python