python中item是什么类型的游戏_文本冒险游戏(Python)中的Item类

我正在用python制作一个文本冒险游戏。我有大部分的基本项目设置,如链接位置和保存功能。(我在设置save功能时有点困难,所以如果有更好的方法,请告诉我)。在

现在我想做些东西。具体地说,我希望项目位于某个位置(可能与其他位置相互链接的方式相同),并且当玩家与它们交互时(例如,拾取它),它们更新了该项目的位置。我希望用户必须输入命令,并认识到他们需要的项目,而不是让项目被动地拿起一旦他们进入一个区域。(商店也是非功能性的,如果你能告诉我如何最好地做这件事+维护玩家的库存,那就太好了)

我知道这将包括很多东西,比如一个新的类,和一些新的函数,这些函数明确规定了什么命令可以工作。我试了一下,但很快就撞到了墙上。如果你们中有人能帮我,那就太棒了。(另外,如果有更好/更快的方法来做某事,请指出它,我会考虑添加它)。在

代码如下:import pickle

import time

# Constants/Valid Commands

# This is a mess, ignore it unless it causes a problem.

invalidChars = '\"\'()*&^%$#@!~`-=_+{}[]\|:;.?/'

validLogin = 'log in', 'log', 'saved', 'in', 'load', 'logging in', 'load game', 'load'

validNewGame = 'new', 'new game', 'new save'

directions = ['north', 'south', 'east', 'west']

possibleGenders = ['boy', 'girl']

examineCommands = ['examine yourself', 'look at yourself', 'my stats', 'my statistics', 'stats', 'statistics', 'examine statistics', 'examine stats']

invalidExamine = ['examine', 'look at' ]

stop = ['stop', 'exit', 'cancel']

# FUNCTIONS

def start():

print("Welcome to XXXXX, created by Ironflame007") #XXXX is the name placeholder. I haven't decided what it will be yet

while True:

command = input("Are you making a new game, or logging in?\n> ")

if command in validNewGame:

clear()

newGame()

break

elif command in validLogin:

clear()

login()

break

else:

clear()

print("Thats not a valid command. If you wish to exit, type exit\n")

def newGame():

while True:

username = input('Type in your username. If you wish to exit, type exit\n> ')

if username[0] in invalidChars:

clear()

print('Your username can\'t start with a space or any other type of misc. character. Just letters please')

elif username in stop:

clear()

start()

else:

break

password = input('Type in your password\n> ')

playerName = input("What is your character's name?\n> ")

while True:

playerGender = input("Is your character a boy or a girl?\n> ".lower())

if playerGender not in possibleGenders:

print("That's not a valid gender...")

else:

clear()

break

inventory = []

health = 100

player = Player(playerName, playerGender, 0, 1, inventory, health, password)

file = username + '.pickle'

pickle_out = open(file, 'wb')

pickle.dump(player.player_stats, pickle_out)

pickle_out.close()

print("You wake up. You get off of the ground... dirt. You didn't fall asleep on dirt. You look around an observe your surroundings\n(If you need help, use the command help)") # hasn't been made yet

game('default', username, player.player_stats)

def examine(string, dictionary):

if string in examineCommands:

print(dictionary)

elif string in invalidExamine:

print('There is nothing to {0}'.format(string))

else:

print('Thats an invalid command')

def clear():

print('\n' * 50)

def game(startLoc, username, dictionary):

if startLoc == 'default':

currentLoc = locations['woods']

else:

currentLoc = dictionary['location']

while True:

print(currentLoc.description)

for linkDirection,linkedLocation in currentLoc.linkedLocations.items():

print(linkDirection + ': ' + locations[linkedLocation].name)

command = input("> ").lower()

if command in directions:

if command not in currentLoc.linkedLocations:

clear()

print("You cannot go this way")

else:

newLocID = currentLoc.linkedLocations[command]

currentLoc = locations[newLocID]

clear()

else:

clear()

if command in examineCommands:

examine(command, dictionary)

elif command in invalidExamine:

examine(command, dictionary)

elif command == 'log out':

logout(username, dictionary, currentLoc)

break

else:

print('That\'s an invalid command.')

print("Try one of these directions: {0}\n If you are trying to log out, use the command log out.".format(directions))

def login():

while True:

while True:

print('If you wish to exit, type exit or cancel')

username = input("What is your username\n> ")

if username in stop:

clear()

start()

break

else:

break

inputPass = input("What is your password\n> ")

try:

filename = username + '.pickle'

pickle_in = open(filename, 'rb')

loaded_stats = pickle.load(pickle_in, )

if loaded_stats['password'] == inputPass:

clear()

print("Your game was succesfully loaded")

game('location', username, loaded_stats)

break

else:

clear()

print("That's an invalid username or password.")

except:

clear()

print("Thats an invalid username or password.")

def logout(username, dictionary, currentLoc):

print("Please don't close the window, the programming is saving.")

dictionary.update({'location': currentLoc})

file = username + '.pickle'

pickle_out = open(file, 'wb')

pickle.dump(dictionary, pickle_out)

pickle_out.close()

time.sleep(3)

print("Your game has been saved. You may close the window now")

class Location:

def __init__(self, name, description):

self.name = name

self.description = description

self.linkedLocations = {} # stores linked locations in this dictionary

def addLink(self, direction, destination):

# adds link to the linked locations dictionary (assuming the direction and destination are valid)

if direction not in directions:

raise ValueError("Invalid Direction")

elif destination not in locations:

raise ValueError("Invalid Destination")

else:

self.linkedLocations[direction] = destination

class Player:

def __init__(self, name, gender, gold, lvl, inventory, health, password):

self.name = name

self.gender = gender

self.gold = gold

self.lvl = lvl

self.inventory = inventory

self.health = health

self.player_stats = {'name': name, 'gender': gender, 'gold': gold, 'lvl': lvl, 'inventory': inventory, 'health': health, 'password': password, 'location': 'default'}

# ACTUALLY WHERE THE PROGRAM STARTS

locations = {'woods': Location("The Woods", "You are surrounded by trees. You realize you are in the woods."),

'lake': Location("The Lake", "You go north and are at the lake. It is very watery."),

'town': Location("The Town", "You go north, and find yourself in town."),

'shop': Location("The Shop", "You go east, and walk into the shop. The shop owner asks what you want")

}

locations['woods'].addLink('north', 'lake')

locations['lake'].addLink('south', 'woods')

locations['lake'].addLink('north', 'town')

locations['town'].addLink('south', 'lake')

locations['town'].addLink('east', 'shop')

locations['shop'].addLink('west', 'town')

start()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值