这是代码,我正在尝试做一个几乎没有导入的开放世界ascii游戏,str 1基本上是Map,但被剥离到一行中,以使它更容易复制和粘贴到代码中,忽略str 2,因为它只是cave 2的一个想法(假设是角色购买物品的地方,比如城镇)有一些代码被硬编码,比如小Map功能,也有许多问题,可能是显而易见的,但我真的是新的python,所以随时批评,留下建议或解决方案!
import time
def Convert(string):
list1 = []
list1[:0] = string
return list1
#currently unfixed weird problem where list have empty spaces
# Driver code
str1 = """----X-----------------------------------------------------------------------------------------------------------------------------------X-------------------------XX---X-------------------------------------------------------------------------------------------------XXXXXX------XXXXXXXXX-----------XXXXXXXXXXXXXXXXXXX------------------------XXXXXXXXXXXXX-----------------------------------------------XXXXXXX XXXXXXXXXXX , . , . XXXXXXXXXXXXXXX----------XXXX , . XX--------------------------------------------------X ,, , . , , . , . XXXXXXXXXXXX , . XXXXXXXXXXXX----------XXXXXXX-----------------------XX , . , X X , ., X , . ,,, , . XXXXXXXXXXX XXXXXXX------------------XXXX X , . , . , ., , . X , . , X X X, . , , XX------------------------XXX X X X X XXXXXXXXXXXXXXX X , . , , X X X-----------------------XX , ., X XXX------X-----X--XX , . , . XX----------------------X XXX , . , X XX-----X--------XXX , . , X X , XX--------------------XXX X XXXX-XXX X , . , . , . XXX--------XXX , , , , , XXX-----------------XXX X X XXXX----X--X X X X----XXX , . X X X , . X XX-----------------XX XXX--------XXX X , . X ,,, XXXX , ., , , ,. X , . XX-----------------XX ,. XX-X-----X---XXXX X X X X XXXXX X--------------XXX XXX--------XX . , , . , , , XXXXXXXXXXXXXX-----XXXXX XX-------------XX XX----XX , X , . , X X X X ,. XX-----X---------X--------XX X-------------XX XX X XXXX , X , X XXX----------X----X---X---XXX XX----X----XX XX X X X X , . , X X X X----------X------X----XX,, XXX-----X----X X, . X X X X .,.. X X XXX-----X---------------XX XX-----X-------X , . , . , X X X X X , . X X XX-----------X-------XXX , . X--------------XXX X , ., . , XX X , . , . XXXXXX ,. X-----X---X---X-----X X----------------XXX , , ,. X XX , , . XXXXXX---XX , . , , . X XXX------X-----XXXXX X X XX-----X----X--------XXX , XXX X X XXXXXXX------XXXXX , . XXXXXXXXXXX , . , XX-------X---XX-------XX X X XXX------XX----X--XXX X X X X X X X X XXX-----X-------------XXX , . , . , X--------X----X----XXX X XXXXXXX , . , . , . , XX---------------------X , . , XXX-----XX-------XXX-XX XX X X X X XXX------XXXXX X X X X XX------XXX---------XXXX XX------------XX----XXX XXXX XXX-----------XXX , . , . , XX----------XX-------XXXX XX X X XX-----------XXX----XXX , ., . XXXX---XX X X X--------XXX X X X-------------X--------XXX , . XXXX--------X--------XXX X--------XX X XX-----XX , . X . , X ,. X----------X-----X------XX XX------------XXX X X------X---X XXXXXX X , . X-------------------------XXX , , XX-------XXX . , . , , . XXX-----XXX XX X X XXX XXX X X X X XX-XXX------------------------XXX X X-----X X XXXXX , . XX-----------------------------XX , . XXXXXXX , X . , . X X X, . , X , . XX X X--X------------XX----------------XXX , . ,. , . ,. , XXXX XX X X X X-----------------------------------XX, . , X , . , . , . , X----XXX-X X X , . . , , X--X---------------------------------XX , . , X XXX---------XX , . . , , . , X-----------XXX-----------XX-----------XXXXX , . X , . X XX , X-------------X , . . . , . , , . , +-+. X---X--------X-----X-----X----X---X------XXX , . XX--------------XXXX X X X |♅| X------------------------------------------XXXXX XX, . , . X------------------X , . , .|=| . XX---------------------------------------------XXXXXXXXXX . , XXXXXXXXXXXXXXXXX------XXX , . X XX---------------------------------------------------------XXXXX XXXXX-X---------------XX-XXX-XXXXXXXX , . XXXXXXXXXX------------------------------------------------------------XXXXX------------------------------XXXXXXXXXXXXXXXXXXXXXXXXX----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"""
str2 = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX ❁ ❁ XX XX XXXXXXXXXXXXXXX ❁ XX ❁ X -♅- X XX X o X XX ❁ X X ❁ XX X o o X XX X o o X ❁ XX ❁ X o o X ❁ XX XXXXXX---XXXXXX XX____________|---|____________XX |---| XX____________|---|____________XX |---| XX____________|---|____________XX |---| XX____________|---|____________XX |---| XXXXXXXXXXXXXXX\-/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
UncollidableObject = ["X", "#", "+", "|", "-", "♅"]
tpobject = ["="]
inventory = ["test_slot"]
#make sure the map's code is stripped to one line, or else it will print \n
myworld = Convert(str1)
temple = Convert(str2)
nline = 130
#number of characters in one line
#uses this structure
# 1 2 3 4
# 5 6 7 8
# 9 10 11 12
# 13 14 15 16
#analogy of how the program works
#however there is a large flaw is that when the user goes OUT of the map, the location is less predictable
#this is solved by creating barriers around the map that the user cannot escape from to ensure the stability of the game
location = 5186
cave = 1
#could be anywhere (as long as not out of map)
oldlocation = location
count1 = 0
count2 = 0
minicount1 = 0
minicount2 = 0
y = ""
oldcharactercount = 0
worldunit = myworld[0]
myworld.pop(location)
myworld.insert(location, " ")
oldcharacter = myworld[location]
startscreen = """ _ ___ _.--.
\`.|\..----...-'` `-._.-'_.-'`
/ ' ` , __.--'
)/' _/ \ `-_, /
`-'" `"\_ ,_.-;_.-\_ ', START SCREEN
_.-'_./ {_.' ; /
{_.-``-' {_/"""
def loadworld(count1, count2, myworld, location):
worldstring = ""
worldunit = myworld[0]
print("\n" * 15)
for i in range(len(myworld)):
worldunit = myworld[count2]
count2 = count2 + 1
count1 = count1 + 1
worldstring = worldstring + worldunit
if count1 == nline:#(number of characters in one line)
count1 = 0
worldstring + "\n"
print(worldstring)
worldstring = ""
def minimap(myworld, location, minicount1, minicount2):
print("\n" * 45)
print("\n" * 45)
print(location)
minimapl = []
count3 = 0
count4 = 0
count3 = -524
for i in range(9):
minimapl.insert(count4, myworld[location + count3])
count3 = count3 + 1
count4 = count4 + 1
count3 = -394
for i in range(9):
minimapl.insert(count4, myworld[location + count3])
count3 = count3 + 1
count4 = count4 + 1
count3 = -264
for i in range(9):
minimapl.insert(count4, myworld[location + count3])
count3 = count3 + 1
count4 = count4 + 1
count3 = -134
for i in range(9):
minimapl.insert(count4, myworld[location + count3])
count3 = count3 + 1
count4 = count4 + 1
count3 = -4
for i in range(9):
minimapl.insert(count4, myworld[location + count3])
count3 = count3 + 1
count4 = count4 + 1
count3 = 126
for i in range(9):
minimapl.insert(count4, myworld[location + count3])
count3 = count3 + 1
count4 = count4 + 1
count3 = 256
for i in range(9):
minimapl.insert(count4, myworld[location + count3])
count3 = count3 + 1
count4 = count4 + 1
count3 = 386
for i in range(9):
minimapl.insert(count4, myworld[location + count3])
count3 = count3 + 1
count4 = count4 + 1
count3 = 516
for i in range(9):
minimapl.insert(count4, myworld[location + count3])
count3 = count3 + 1
count4 = count4 + 1
miniunit = minimapl[0]
ministring = ""
for i in range(len(minimapl)):
miniunit = minimapl[minicount2]
minicount2 = minicount2 + 1
minicount1 = minicount1 + 1
ministring = ministring + " " + miniunit
if minicount1 == 9:#nline
minicount1 = 0
ministring + "\n"
print(ministring)
ministring = ""
print("\n" * 10)
print("\n" * 45)
print("\n" * 45)
print("The ASCII Open World Game (In Development)")
input("Press [ENTER] to continue")
print("\n" * 45)
print("\n" * 45)
print("Your Vision is Limited, but you can always use your map to locate yourself (this feature might be removed after testing)")
input("Press [ENTER] to continue")
print("\n" * 45)
print("\n" * 45)
print("IT IS RECOMMENDED TO USE TERMINAL TO PLAY THE GAME, CURRENT PROGRESS LIMITED TO ONLY CHARACTER MOVEMENT")
input("Press [ENTER] to continue")
print("\n" * 45)
print("\n" * 45)
while True:
print("\n" * 45)
print("\n" * 45)
print(startscreen)
startgame = input("Click [ENTER] to play")
minimap(myworld, location, minicount1, minicount2)
while cave == 1:
direction = input("Command or (i)nformation: ")
if direction == "w":
location = location - nline
if myworld[location] in UncollidableObject:
location = location + nline
#loadworld(count1, count2, myworld, location)
minimap(myworld, location, minicount1, minicount2)
elif myworld[location] in tpobject:
cave = 2
else:
myworld.pop(oldlocation)
myworld.insert(oldlocation, oldcharacter)
oldcharacter = myworld[location]
myworld.pop(location)
myworld.insert(location, "@")
#loadworld(count1, count2, myworld, location)
minimap(myworld, location, minicount1, minicount2)
oldlocation = location
elif direction == "a":
location = location - 1
if myworld[location] in UncollidableObject:
location = location + 1
#loadworld(count1, count2, myworld, location)
minimap(myworld, location, minicount1, minicount2)
elif myworld[location] in tpobject:
cave = 2
else:
myworld.pop(oldlocation)
myworld.insert(oldlocation, oldcharacter)
oldcharacter = myworld[location]
myworld.pop(location)
myworld.insert(location, "@")
#loadworld(count1, count2, myworld, location)
minimap(myworld, location, minicount1, minicount2)
oldlocation = location
elif direction == "s":
location = location + nline
if myworld[location] in UncollidableObject:
location = location - nline
#loadworld(count1, count2, myworld, location)
minimap(myworld, location, minicount1, minicount2)
elif myworld[location] in tpobject:
cave = 2
else:
myworld.pop(oldlocation)
myworld.insert(oldlocation, oldcharacter)
oldcharacter = myworld[location]
myworld.pop(location)
myworld.insert(location, "@")
#loadworld(count1, count2, myworld, location)
minimap(myworld, location, minicount1, minicount2)
oldlocation = location
elif direction == "d":
location = location + 1
if myworld[location] in UncollidableObject:
location = location - 1
#loadworld(count1, count2, myworld, location)
minimap(myworld, location, minicount1, minicount2)
elif myworld[location] in tpobject:
cave = 2
else:
myworld.pop(oldlocation)
myworld.insert(oldlocation, oldcharacter)
oldcharacter = myworld[location]
myworld.pop(location)
myworld.insert(location, "@")
#loadworld(count1, count2, myworld, location)
minimap(myworld, location, minicount1, minicount2)
oldlocation = location
elif direction == "i":
print("Information Tab:")
print("(w)(a)(s)(d) for movements")
print("(m) for map")
print("(p) for pocket/inventory")
elif direction == "m":
loadworld(count1, count2, myworld, location)
elif direction == "p":
print("Inventory: ", inventory)
else:
minimap(myworld, location, minicount1, minicount2)
if cave == 2:
#something more for user to explore!
1条答案
按热度按时间91zkwejq1#
在定义
str1
的开始附近,您应该使用单引号或双引号' or "
,这样peole就不会认为您正在定义多行字符串