1. 理清楚游戏思路

实现功能:2个洞穴选择,一个洞穴是好龙,一个洞穴是坏龙,坏龙可以概率屠龙或者概率逃跑选项(后续难度需要增加宝藏获取装备,随机遇见商人,随着游戏进度逐步减少屠龙概率)

2. 计数和函数导入

import random,time
game_dict={}
game_dict['Treasure_number']=0# 宝藏个数
game_dict['Challenge_dragon_number'] = 0 # 屠龙次数

3. 构造输入验证

def Double_choice(a,b,hint):
'''双选择验证函数
:param a 第一个选项值
:param b 第二个选项值
:param hint 选项信息
:return 返回输入值'''
choice=''
while choice.lower() !=a and choice.lower() !=b:
print(hint)
choice=input()
return choice

4. 构造概率计算

def probability_calculation(success_probability):
'''概率计算
:param success_probability 成功概率
:return True 成功 False 失败'''
pro_list=[]
failure_probability=100-success_probability
for i in range(success_probability):
pro_list.append(True)
for i in range(failure_probability):
pro_list.append(False)
random.shuffle(pro_list)
return random.choice(pro_list)

5. 游戏开始提示

def game_info():
'''游戏开始提示函数'''
print('欢迎来到龙的国度游戏')
print('在你面前你看见二个洞穴')
print('一个洞穴里龙很友好他会和你分享他的宝藏')
print('而另一个洞穴龙贪婪又饥饿,眨眼间就能把你吃掉')

6. 游戏结束提示

def game_over():
'''游戏结束提示函数'''
print('饥饿的龙吃了你...')
if game_dict['Challenge_dragon_number']:
print('饥饿的龙为%d个兄弟报仇雪恨' % game_dict['Challenge_dragon_number'])
if game_dict['Treasure_number']:
print('饥饿的龙获得%d个宝藏'%game_dict['Treasure_number'])
else:
print('饥饿的龙表示你很穷...')
print('Game Over')

7. 屠龙概率计算

def kill_dragon(kill_probability):
'''屠龙概率计算
:param kill_probability 屠龙概率
:return True 屠龙成功 False 屠龙失败'''
if probability_calculation(kill_probability):
game_dict['Challenge_dragon_number'] += 1
print('屠龙成功! (成功屠杀巨龙%d次)'% game_dict['Challenge_dragon_number'])
return True
else:
print('屠龙失败的你倒在了血泊中....')
return False

8. 逃跑概率计算

def run_away(escape_probability):
'''逃跑概率计算
:param escape_probability 逃跑概率
:return True 逃跑成功 False 逃跑失败'''
if probability_calculation(escape_probability):
print('你成功逃跑了...')
return True
else:
print('逃跑失败只能屠龙....')
return False

9. 构造好龙选项

def good_dragon():
game_dict['Treasure_number'] += 1
print('友善的龙送给你了一个宝藏(成功获取宝藏%d次)' % game_dict['Treasure_number'])

10. 构造坏龙选项

def bad_dragon():
'''坏的选项
:return True 屠龙成功,False屠龙失败'''
print('饥饿的巨龙眼冒绿光的看着你....')
kill_probability = random.randint(1, 100) # 生成屠龙概率
escape_probability = random.randint(1, 100) # 生成逃跑概率
message = '你有%d%%的概率屠龙,%d%%的机率逃跑(1屠龙 or 2逃跑)' % (kill_probability, escape_probability)
bad_choice = Double_choice('1', '2', message)
if bad_choice == '1':
if kill_dragon(kill_probability):
return True
elif bad_choice == '2':
if not run_away(escape_probability):
if kill_dragon(kill_probability):
return True
else:
return True
return False

11. 核心洞穴选择判断

def game_start():
'''核心判断洞穴'''
while True:
message='请问你要进那个洞穴(1 or 2)'
chosenCave = Double_choice('1','2',message)
print('你慢慢的走进洞穴中.....')
time.sleep(1)
print('一条巨龙出现在了你面前....')
time.sleep(1)
friendlyCave = random.randint(1, 2)
if chosenCave == str(friendlyCave):
good_dragon()
else:
if not bad_dragon():
break
game_over()

12. 程序外壳

def game_shell():
'''外壳程序'''
game_info()
game_start()
while True:
message='你想在玩一次吗(Y or N)'
again_flag=Double_choice('y','n',message)
if again_flag=='n':
break
game_start()

13. 调用执行函数

game_shell()

python学习途径

本游戏参考书本 <<Python游戏编程快速上手>>

友情推荐:  猿人学Python【https://www.yuanrenxue.com/】 由一群工作十余年的老程序员结合实际工作经验所写的Python教程。

python 游戏(龙的国度)的更多相关文章

  1. 12个Python游戏中的龙穴探险,快速掌握基础,其实很简单

    越来越多的人学习python编程,但更多的人,拿着教程却不知道该怎么学. 今天我给大家举一个例子,是我自己学习python时,用到的方法.     首先,我是一名普通的程序员,相对于十几年开发经验的程 ...

  2. Python游戏编程入门

    <Python游戏编程入门>这些文章负责整理在这本书中的知识点.注意事项和课后习题的尝试实现.并且对每一个章节给出的最终实例进行分析和注释. 初识pygame:pie游戏pygame游戏库 ...

  3. python 游戏 —— 汉诺塔(Hanoita)

    python 游戏 —— 汉诺塔(Hanoita) 一.汉诺塔问题 1. 问题来源 问题源于印度的一个古老传说,大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆 ...

  4. Python 游戏之旅(Pygame)

    Pygame是跨平台Python模块,专为电子游戏设计,包含图像.声音.建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚.基于这样一个设想,所有需要的游戏功能和理念 ...

  5. python 游戏(船只寻宝)

    1. 游戏思路和流程图 实现功能:船只在可以在大海上移动打捞宝藏,船只可以扫描1格范围内的宝藏(后续难度,可以调整扫描范围,可以调整前进的格数) 游戏流程图 2. 使用模块和游戏提示 import r ...

  6. python 游戏(数字推理游戏Bagels)

    1.游戏思路和流程图 实现功能:玩家猜测三位不一样的数字,猜错了有提示,提示分别为(位置错误数字正确),(位置和数字正确),(数字和位置都不正确) 游戏流程图 2. 使用模块和游戏提示 import ...

  7. python 游戏(井字棋)

    1. 游戏思路和流程图 实现功能,现实生活中的井字棋玩法 游戏流程图 2. 使用模块和游戏提示 import random def game_info(): print('欢迎来到井字棋游戏') pr ...

  8. python 游戏(猜单词Hangman)

    1.游戏思路和流程图 实现功能:随机一个单词让玩家猜测(后续难度实现修改为成语填空,成语必须要有提示,可修改猜的次数,增加连续猜成语,难度系数随着次数的增加而增加) 游戏流程图 2. 单词库和模块 i ...

  9. python 游戏(猜数字)

    1. 构造猜数字核心函数 import random def guess_core(guess_min,guess_max,guess_counrt): '''猜数字核心判断函数 :param gue ...

随机推荐

  1. Docker容器学习与分享08

    Docker容器网络 Docker除了默认创建的三种网络外,还可以自定义网络. 首先创建一个bridge类型的网络,使用docker network create命令. [root@promote ~ ...

  2. KMP、扩展KMP、Manacher习题

    照着这篇博客刷一下. 自己也做一下笔记 对于KMP算法,可以看我之前总结的这篇博客 hdu 3613 Best Reward 给一个字符串,字符由a~z构成,每个字符有一个权值.在某一点将字符串切成2 ...

  3. Windows Server 2008远程桌面端口更改方法

    win2008远程桌面端口默认是用的是3389端口,但是由于安全考虑,经常我们安装好系统后一般都会考虑把原来的3389端口更改为另外的端口.本文以改为端口为25608商品为例,讲解一下具体操作过程. ...

  4. Nginx防hashdos模块使用帮助

    经过上周一周朋友们帮忙测试和bug fix,nginx_http_hashdos_module已经达到可以线上使用的水平,下面是使用记录. 下载 #wget --no-check-certificat ...

  5. Netty入门(三)构成部分

    该节主要讲解 Netty 的构成部分. 一.Channel 它代表一个用于连接到实体如硬件设备.文件.网络套接字或程序组件,能够执行一个或多个不同的 I/O 操作的开放连接.可以比作传入和传出数据的传 ...

  6. BZOJ2502:清理雪道(有上下界最小流)

    Description        滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时 ...

  7. BZOJ4923:[Lydsy1706月赛]K小值查询(Splay)

    Description 维护一个长度为n的正整数序列a_1,a_2,...,a_n,支持以下两种操作: 1 k,将序列a从小到大排序,输出a_k的值. 2 k,将所有严格大于k的数a_i减去k. In ...

  8. win10管理员已阻止你运行此应用”解决方法

    方法/步骤 1 按WIN+R键,打开“运行”,然后输入“gpedit.msc",就是打开组策略,这个在控制面板中也可以打开. 2 在组策略里找到“计算机配置”-“Windows设置”-“安全 ...

  9. 如何为已有的类没有生成toString的方法增强生成toString方法

    1:只要提到增强,我的第一思路就是代理,动态代理.但是仅仅是一个toString其实没必要使用代理模式了,有点大材小用了(动态代理其实也是最后通过反射生成toString的方法). 2:简单粗暴,可以 ...

  10. 常见的CSS属性和值CascadingStyleSheets

    字体文本背景位置边框列表其他 CSS中修饰字体的属性 属    性 描    述 属  性  值 font-family 字体族科 任意字体族科名称都可以使用例如Times.serif等,而且多个族科 ...