在国外网站上找到一个练习Python的小游戏感觉不错,自己实现了一下。

通过该练习你能学到:

  1. 元组
  2. 字典
  3. 简单定义函数和封装
  4. 条件控制语句

游戏说明

以下是3个房间和1个花园:

Hall 客厅 有一把钥匙,Kitchen 厨房 有一只怪物,Dinning Room 餐厅 有一瓶药水,Garden 花园

完成游戏条件:拿到钥匙和药水到达花园并躲避怪物。

游戏操作指令:
      go [direction]
      get [item]

[direction] 包含:east, west, south, north

[item] 包含:key, potion

游戏源码

#! python3
"""
author: laoxu
""" # 游戏说明
def showInstructions():
print('''
RPG Game
========
完成游戏条件:拿到钥匙和药水到达花园并躲避怪物。 命令:
go [direction]
get [item]
'''
) # 打印当前房间和背包信息
def showCurrentRoom(room, bag):
print('You are in the %s' % room)
print('Inventory: ', bag) rooms = {
'Hall': {
'south': 'Kitchen',
'east': 'Dinning Room',
'item': 'key'
},
'Kitchen': {
'north': 'Hall',
'item': 'monster'
},
'Dinning Room': {
'west': 'Hall',
'south': 'Garden',
'item': 'potion'
},
'Garden': {
'north': 'Dinning Room'
}
} # 初始化房间
currentRoom = 'Hall' # 初始化物品栏
inventory = [] # 打印游戏帮助
showInstructions() print('You are in the %s' % currentRoom)
print('Inventory: ', inventory)
print('You see a key') while True:
# 玩家进入厨房,游戏结束
if 'item' in rooms[currentRoom] and 'monster' in rooms[currentRoom]['item']:
print('你被怪物抓住了...游戏结束!')
break
# 玩家拿到钥匙和药水进入花园,游戏结束
if currentRoom == 'Garden' and 'key' in inventory and 'potion' in inventory:
print('你逃脱了房子!你赢了!')
break # 接收操作步骤
step = input() # 客厅->厨房
if currentRoom == 'Hall' and step == 'go south':
currentRoom = 'Kitchen'
continue
# 客厅->餐厅
elif currentRoom == 'Hall' and step == 'go east':
currentRoom = 'Dinning Room'
# 厨房->客厅
elif currentRoom == 'Kitchen' and step == 'go north':
currentRoom = 'Hall'
# 餐厅->客厅
elif currentRoom == 'Dinning Room' and step == 'go west':
currentRoom = 'Hall'
# 餐厅->花园
elif currentRoom == 'Dinning Room' and step == 'go south':
currentRoom = 'Garden'
# 花园->餐厅
elif currentRoom == 'Garden' and step == 'go north':
currentRoom = 'Dinning Room'
# 拿到钥匙
elif currentRoom == 'Hall' and 'key' not in inventory and step == 'get key':
inventory.append('key')
print('key got!')
# 拿到药水
elif currentRoom == 'Dinning Room' and 'potion' not in inventory and step == 'get potion':
inventory.append('potion')
print('potion got!') # 打印房间和物品栏
showCurrentRoom(currentRoom, inventory) if currentRoom == 'Hall' and 'key' not in inventory:
print('You see a key')
if currentRoom == 'Dinning Room' and 'potion' not in inventory:
print('You see a potion') continue

运行效果

Python之初级RPG小游戏的更多相关文章

  1. 用Python设计一个经典小游戏

    这是关于Python的第9篇文章,介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习 ...

  2. Python开发接水果小游戏

    我研发的Python游戏引擎Pylash已经更新到1.4了.如今我们就来使用它完毕一个极其简单的小游戏:接水果. 下面是游戏截图: 游戏操作说明:点击屏幕左右两边或者使用键盘方向键控制人物移动.使人物 ...

  3. python【控制台】小游戏--贪吃蛇

    传统贪吃蛇相信大家都玩过,也是一款很老很经典的游戏,今天我们用python控制台实现 项目有很多bug没有解决,因为本人一时兴起写的一个小游戏,所以只是实现可玩部分功能,并没有花较多的时间和精力去维护 ...

  4. python成语接龙小游戏

    上一篇讲了小游戏的坑现在把源码放出来 #coding:utf-8 import string import pypinyin import sys import random print(" ...

  5. 【Python】猜数小游戏(文件操作)

    人生苦短,我用Python 关键词 1.多用户 2.字典记录所有成绩 3.每次游戏轮数&总游戏次数&平均每次游戏需要多少轮 字典Dictionary.列表List.元组Tuple差异化 ...

  6. python做一个数独小游戏

    最近看了下python的一些知识,在这里记载一下. 1.首先是安装,在官网下载最新的版本3.6,安装的时候要注意在下面勾选上ADD TO PATH,安装的时候会自动写入到环境变量里面,如果没有勾选,可 ...

  7. 【Python】猜数小游戏

    有点沙雕 temp=input("猜猜我心里想的是哪个数字?") guess=int (temp) if guess==8: print("你是我肚里的蛔虫么?" ...

  8. Python制作塔防小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块.

  9. python——成语接龙小游戏

    小试牛刀的简易成语接龙. 思路—— 1.网上下载成语字典的txt版本 2.通过python进行处理得到格式化的成语,并整理成字典(python字典查找速度快) 3.python程序,查找 用户输入的最 ...

  10. python学习-6 猜拳小游戏

    import random # 调用随机数模块 pc = random.randint(1,3) # 产生1-3的随机数 print("来玩个猜拳游戏吧!") a = '石头' b ...

随机推荐

  1. Go-基本类型-int-float-bool-byte-rune

  2. [转帖]linux下查看内存频率,内核函数,cpu频率

    https://www.cnblogs.com/lovesKey/p/10900501.html 查看CPU: cat /proc/cpuinfo # 总核数 = 物理CPU个数 X 每颗物理CPU的 ...

  3. [转帖]ASH REPORT SHOWS “** Row Source Not Available **”

    https://alphaoragroup.com/2022/04/06/ash-report-row-source-not-available/ Whenever in ASH report, th ...

  4. 【转帖】8.JVM双亲委派机制(面试常问)

    目录 1.什么是双亲委派机制? 2.双亲委派机制的优势 3.沙箱安全机制 1.什么是双亲委派机制? 双亲委派机制工作原理:(面试) 1.如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这 ...

  5. [转帖]一文浅析Nginx线程池!

    https://zhuanlan.zhihu.com/p/616500765     Nginx通过使用多路复用IO(如Linux的epoll.FreeBSD的kqueue等)技术很好的解决了c10k ...

  6. [转帖]Linux下的I/O复用与epoll详解

    https://blog.csdn.net/weixin_39094034/article/details/110393127 前言 I/O多路复用有很多种实现.在linux上,2.4内核前主要是se ...

  7. [转帖]网络传输性能netperf测试方法和下载

    简介 Netperf是一种网络性能的测试工具,主要针对基于TCP或UDP的传输.Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式 ...

  8. vCenter 6.7 使用Grafana监控失败的处理

    背景 国庆处理的vCenter监控. 老的vCenter6.0的平台很正常. 但是新的vCenter 6.7 就经常出现断连的情况. 花费了快一个多小时才搞定, 这里记录一下. 问题现象 vCente ...

  9. Mysql 安装文件下载

    今天上了mysql的官方网站想下载mysql数据库 https://www.mysql.com 注册之后发现 出口许可证的问题 这里fxxk 一下川建国的老婆和女儿 感觉比较抑郁 然后就去百度了下 发 ...

  10. 在k8s中的控制器和部署服务-ReplicationController和ReplicaSet

    pod 代表了 k8s 中的基本部署单元,但是在实际应用场景中,服务不可能是单个pod运行的,否则会出现"单点".在 k8s 中对 pod 的托管部署,专门抽象成了单独的资源.其中 ...