我的基于文本的游戏中的 Ascii 文本打印顺序不正确?
Ascii text printing out of order in my Text Based Game?
编辑:这是通过将我的打印语句更改为 print(r""" """) 解决的 "r" 打印原始文本并忽略诸如“/”之类的符号
我正在为我的高中 AP Comp Sci 使用 ASCII 图形制作基于文本的游戏 class。我遇到的问题是,出于某种原因,我的图形(只是三重引号字符串”)的打印方式与我的 IDE 中的不同。它们总是偏离一条线或将一条线推得比它应该走的更远. 以下是我的代码的摘录,它会产生上述错误:
def draw(str):
#This function allows the game to draw graphics
for letter in str:
sys.stdout.write(letter)
sys.stdout.flush()
time.sleep(0.0001**100)
print('')
def clear():
if os.name == 'nt':
os.system('cls')
else:
os.system('clear')
def gLine():
#Function Draws lines
draw("*****************************************************************************************************************************")
def gChurch():
clear()
gLine()
draw(""" +
|
,|,
|||
/ | \
| | |
| | |
/ | \
| | |
| | \
/ \ |
| | |
| | \
/ | |
8 | | |
''8'' / | \
8 / \ ,\
,d8888888888888|========|='' |
,d" "88888888888| ,aa, | a |
,d" "888888888| 8 8 | 8 |
,d8888888b, "8888888| 8aa8 | 8,|
,d" "8888888b, "88888|========|='''|
,d" "8888888b, "888| a a | a |
,d" ,aa, "8888888b, "8| 8 8 | 8,|
/| d' 'b |''''''| |========|='''|
| 8 8 | | | ,aa, | a |
| 8aaaa8 | | | 8 8 | 8 |
| | | | "''" | ,,=|
|aaaaaaaaaaaaaa|======''''''''''''''''''''' """)
gLine()
def gGameOver():
clear()
draw("""
_____ ____
/ ____| / __ \
| | __ __ _ _ __ ___ ___ | | | |_ _____ _ __
| | |_ |/ _` | '_ ` _ \ / _ \ | | | \ \ / / _ \ '__|
| |__| | (_| | | | | | | __/ | |__| |\ V / __/ |
\_____|\__,_|_| |_| |_|\___| \____/ \_/ \___|_|
""")
def event():
if Zalgo.happiness < 60:
gChurch()
ps("Zalgo is dissatisfied with your level of faithfullness. A thunderstorm is heard overhead...")
chance = random.randint(1, 4)
ps("Rolling dice...")
if chance == 1:
ps("You have been smitten!")
print("You have died")
time.sleep(3)
gameOver()
else:
ps("Lightning cracks overhead, but does not strike you. Zalgo has forgiven you... You live another day")
此代码本身会无缘无故地导致教堂中的一条线路快速移动。我已经查看代码至少 40 次,但仍然没有找到它应该这样做的理由。如果您想复制并粘贴它并亲自查看错误,这是我游戏的完整代码:
#Made by Nick Pope -------------------------------------------------#
import sys
import os
import time
import random
#Screen-------------------------------------------------------------#
os.system("mode con cols=125")
#Width of Screen
os.system("mode con lines=50")
#Length of Screen
#Commands-----------------------------------------------------------#
commands = ["//options, //Help"]
#Lists--------------------------------------------------------------#
activity = ["Example Activity 1.", "Example activity 2"]
resource = ["wealth","food","land"]
#Functions----------------------------------------------------------#
def save():
print("This is supposed to save, but it doesn't work yet")
def load():
print("This is supposed to load, but it doesn't work yet")
def clear():
if os.name == 'nt':
os.system('cls')
else:
os.system('clear')
def back():
titleScreen()
def wait():
wait = input("Press Enter to continue: ")
def pI(options):
#PI stands for Player Input
playerInput = (input("==> "))
gSpace()
while playerInput not in options and playerInput not in commands:
print(playerInput + " is not a possible option")
print("Do /options for a list of acceptable options")
playerInput = (input("==> "))
if playerInput == "/commands":
print(commands)
elif playerInput == "//options":
print("Acceptable inouts are" + options)
elif playerInput == "//help":
gHelp()
return(playerInput)
def pC():
#"pC" stands for "playerContinue" This function is essentially a fancy "Wait" function
playerInput = input("Enter anything to continue ==> ")
def name ():
playerInput = input("==> ")
for i in playerInput:
while " " in playerInput:
print("You may not uses spaces in your name, try again")
playerInput = input("==> ")
return (playerInput)
#Text Functions-----------------------------------------------------#
def ps(str):
#This function allows the game to type slowly with textwrap
#PS is short for "Print Statement"
typing_speed = len(str) * 5
count = 0
space = False
#This next aspect of the function works with the autotext wrap
#To make sure that it only wraps after full words, not
#midway through
for letter in str:
count += 1
if letter == " " or letter == "":
space = True
else:
space = False
if count >= 100 and len(str) < 200 and space == True:
print('\n')
count = 0
sys.stdout.write(letter)
sys.stdout.flush()
time.sleep(random.random()*10.0/typing_speed)
print('')
def draw(str):
#This function allows the game to draw. I made this so that when
#displays load faster than normal text
for letter in str:
sys.stdout.write(letter)
sys.stdout.flush()
time.sleep(0.0001**100)
print('')
#Graphics-----------------------------------------------------------#
#All Graphic functions start with "g" so that i don't take any
#names I might need later
def gSpace():
print(" ")
def gLine():
#Function Draws lines
draw("*****************************************************************************************************************************")
def gtextBox():
draw("##########################")
def gNextWeek():
gLine()
draw("""
_______ __ __ __ __
\ \ ____ ___ ____/ |_ / \ / \ ____ ____ | | __
/ | \_/ __ \ \/ /\ __\ \ \/\/ // __ \_/ __ \| |/ /
/ | \ ___/ > < | | \ /\ ___/\ ___/| <
\____|__ /\___ >__/\_ \ |__| \__/\ / \___ >\___ >__|_ \
\/ \/ \/ \/ \/ \/ \/
""")
gLine()
def gtitleScreen():
clear()
gLine()
draw("""
___________.__ __ __ __ .__ _____ __________ .__
\__ ___/| |__ ____ / \ / \___________ _/ |_| |__ _____/ ____\ \____ /____ | | ____ ____
| | | | \_/ __ \ \ \/\/ |_ __ \__ \ __\ | \ / _ \ __\ / /\__ \ | | / ___\ / _ \
| | | Y \ ___/ \ / | | \// __ \| | | Y \ ( <_> ) | / /_ / __ \| |_/ /_/ > <_> )
|____| |___| /\___ > \__/\ / |__| (____ /__| |___| / \____/|__| /_______ (____ /____|___ / \____/
\/ \/ \/ \/ \/ \/ \/ /_____/
""")
gLine()
def gExit():
clear()
#save()
gLine()
draw("""
___________ .__ __ .__
\_ _____/__ __|__|/ |_|__| ____ ____
| __)_\ \/ / \ __\ |/ \ / ___\
| \> <| || | | | | \/ /_/ >
/_______ /__/\_ \__||__| |__|___| /\___ / /\ /\ /\ /\ /\ /\ /\
\/ \/ \//_____/ \/ \/ \/ \/ \/ \/ \/""")
gLine()
time.sleep(3)
sys.exit
def gHelp():
clear()
gLine()
draw("""
___ ___ .__ _____
/ | \ ____ | | ______ / \ ____ ____ __ __
/ ~ \/ __ \| | \____ \ / \ / \_/ __ \ / \| | \
\ Y | ___/| |_| |_> > / Y \ ___/| | \ | /
\___|_ / \___ >____/ __/ \____|__ /\___ >___| /____/
\/ \/ |__| \/ \/ \/
""")
gLine()
print("Welcome to the help menu! This game was made by nick pope")
print("1. Go Back")
options = ["1"]
playerInput = pI(options)
if pI == "1":
(back())
def gGameOver():
clear()
draw("""
_____ ____
/ ____| / __ \
| | __ __ _ _ __ ___ ___ | | | |_ _____ _ __
| | |_ |/ _` | '_ ` _ \ / _ \ | | | \ \ / / _ \ '__|
| |__| | (_| | | | | | | __/ | |__| |\ V / __/ |
\_____|\__,_|_| |_| |_|\___| \____/ \_/ \___|_|
""")
def gNorthernLights():
gLine()
draw(""" ` : | | | |: || : ` : | |+|: | : : :| . `
` : | :| || |: : ` | | :| : | : |: | . :
.' ': || |: | ' ` || | : | |: : | . ` . :.
`' || | ' | * ` : | | :| |*| : : :|
* * ` | : : | . ` ' :| | :| . : : * :.||
.` | | | : .:| ` | || | : |: | | ||
' . + ` | : .: . '| | : :| : . |:| ||
. . ` *| || : ` | | :| | : |:| |
. . . || |.: * | || : : :|||
. . . * . . ` |||. + + '| ||| . ||`
. * . +:`|! . |||| :.||`
+ . ..!|* . | :`||+ |||`
. + : |||` .| :| | | |.| ||` .
* + ' + :|| |` :.+. || || | |:`|| `
. .||` . ..|| | |: '` `| | |` +
. +++ || !|!: ` :| |
+ . . | . `|||.: .|| . . `
' `|. . `:||| + ||' `
__ + * `' `'|. `:
"' `---''''----....____,..^---`^``----.,.___ `. `. . ____,.,-
___,--''''`---'' ^ ^ ^ ^ """'---,..___ __,..---'''
"' ^ ``--..,__ """)
gLine()
def gChurch():
clear()
gLine()
draw(""" +
|
,|,
|||
/ | \
| | |
| | |
/ | \
| | |
| | \
/ \ |
| | |
| | \
/ | |
8 | | |
''8'' / | \
8 / \ ,\
,d8888888888888|========|='' |
,d" "88888888888| ,aa, | a |
,d" "888888888| 8 8 | 8 |
,d8888888b, "8888888| 8aa8 | 8,|
,d" "8888888b, "88888|========|='''|
,d" "8888888b, "888| a a | a |
,d" ,aa, "8888888b, "8| 8 8 | 8,|
/| d' 'b |''''''| |========|='''|
| 8 8 | | | ,aa, | a |
| 8aaaa8 | | | 8 8 | 8 |
| | | | "''" | ,,=|
|aaaaaaaaaaaaaa|======''''''''''''''''''''' """)
gLine()
#Factions Zalgo, King, Clergy, Peasant------------------------------#
class faction():
def __init__(self, name, happiness, population, wealth, food, land):
self.name = name
self.happiness = happiness
self.population = population
self.wealth = wealth
self.food = food
self.land = land
Zalgo = faction(
"Zalgo",
0.100,
1,
50,
25,
0)
church = faction(
"church",
0.100,
16,
50,
25,
5)
king = faction(
"king",
0.100,
1,
50,
100,
50)
peasants = faction(
"peasants",
0.100,
1000,
20,
25,
100)
factions = [Zalgo, church, king, peasants]
#Mechanics----------------------------------------------------------#
def weekEnd():
week += 1
calculateStats(factions)
gNextWeek()
def zalgo():
print("Zalgo mechanics are not done yet")
def calculateStats(factions):
for i in factions:
#Faction Food Falculation
i.food += i.land*0.7 + i.population*0.3
#Faction Wealth Calculation
i.wealth += i.food*0.4 + i.land*0.6
#Faction Happiness Calculation
i.happiness = i.wealth*0.5 + i.food*0.3 + i.land*0.2
if i.happiness > 100:
i.happiness = 100
def gameOver():
gGameOver()
ps("Would you like to play again?")
gtextBox()
print("1. Yes")
print("2. No")
gtextBox()
options = ["1","2"]
playerInput = pI(options)
if playerInput == "1":
titleScreen()
elif playerInput == "2":
titleScreen()
#Events-------------------------------------------------------------#
def event():
if Zalgo.happiness < 60:
gChurch()
ps("Zalgo is dissatisfied with your level of faithfullness. A thunderstorm is heard overhead...")
chance = random.randint(1, 4)
ps("Rolling dice...")
if chance == 1:
ps("You have been smitten!")
print("You have died")
time.sleep(3)
gameOver()
else:
ps("Lightning cracks overhead, but does not strike you. Zalgo has forgiven you... You live another day")
elif king.happiness < 60:
gChurch()
ps("The King summons you to his chamber..")
chance = random.randint(1, 4)
ps("Rolling dice...")
if chance == 1:
ps("The king ambushes you and takes your head!")
print("You have died")
time.sleep(3)
gameOver()
else:
ps("The king forgives you, you live to see another day")
elif church.happiness < 60:
gChurch()
ps("The church is disastisfied by your leadership! They staged a coup!")
chance = random.randint(1, 4)
ps("Rolling dice...")
if chance == 1:
ps("You have been smitten zalgo!")
print("You have died")
time.sleep(3)
gameOver()
else:
ps("The disscuss better leadership techniques with you.. you live to see another day")
elif peasants.happiness < 60:
gChurch()
ps("The peasants revolt and enter the church.")
chance = random.randint(1, 4)
ps("Rolling dice...")
if chance == 1:
ps("The peasants stab you 23 times..you resemble a salad")
print("You have died")
time.sleep(3)
gameOver()
else:
ps("You manage to convince the peasants to go home, or face the wrath of Zalgo. You live another day")
time.sleep(3)
#Game Loop----------------------------------------------------------#
def titleScreen():
clear()
pCS = titleScreen
gtitleScreen()
ps("1. Start")
ps("2. Load")
ps("3. Exit")
ps("4. Help")
options = ["1","2","3","4"]
playerInput = pI(options)
if playerInput == "1":
start0()
pCS = start0()
if playerInput == "2":
gload()
if playerInput == "3":
gExit()
if playerInput == "4":
gHelp()
def gameMenu():
clear()
count = 0
#When this count reaches 1, A faction has been interacted with, and another interaction may not occur
event()
zalgo()
ps("What would you like to do?")
gSpace()
gtextBox()
print("1. Interact with Faction")
print("2. End Turn")
gtextBox()
options = ["1", "2"]
playerInput = pI(options)
if playerInput == "1":
while count < 1:
ps("Which faction do you want to interact with?")
gtextBox()
print("1. Church")
print("2. King")
print("3. Peasants")
gtextBox()
options = ["1", "2", "3"]
playerInput = pI(options)
if playerInput == "1":
ps("How would you like to interact with church?")
gSpace()
gtextBox()
print("1. Treat to activity")
print("2. Ask for resource")
print("3. Give money")
gtextBox()
options = ["1","2","3"]
playerInput = pI(options)
if playerInput == "1":
ps("You treat the clergy of the church to " + str(random.choice(activity)))
value = random.randint(1, 5)*0.001
church.happiness += value
calculateStats(factions)
ps("The church's happiness is now " + str(church.happiness))
count += 1
pC()
elif playerInput == "2":
ps("you ask the clergy of the church for " + str(random.choice(resource)) + "! But since you and the clergy are the church, nothing is gained")
count += 1
pC()
elif playerInput == "3":
value = random.uniform(0.005, church.wealth)
ps("You give the clergy of your church " + str(value) + " gold! Their happiness increases by" + str(value))
church.wealth -= value
count += 1
pC()
elif playerInput == "2":
ps("How would you like to interact with the King?")
gSpace()
gtextBox()
print("1. Treat to activity")
print("2. Ask for resource")
print("3. Give money")
gtextBox()
options = ["1", "2", "3"]
playerInput = pI(options)
if playerInput == "1":
ps("You treat the King to " + str(random.choice(activity)))
value = random.randint(1, 5)*0.001
king.happiness += value
calculateStats(factions)
ps("The King's happiness is now " + str(king.happiness))
count += 1
pC()
elif playerInput == "2":
randomresource = random.choice(resource)
value = randint(1, 20)
ps("you ask the King for " + str(randomresource) + "!")
if king.happiness > 0.70:
ps("The king is in good spirits! He grants you " + str(value) + " " + str(randomresource))
ps("You now have " + str(church.randomresource) + " " + str(randomresource))
king.randomresource -= value
church.randomresource += value
count += 1
pC()
else:
ps("The king does not seem interested in loaning you any " + str(randomresource))
count += 1
pC()
elif playerInput == "3":
value = random.uniform(0.001, church.wealth/3)
church.wealth -= value
king.wealth += value
calculateStats(factions)
count += 1
ps("You give the King " + str(value) + " gold! Their happiness increases by " + str(value*0.001) + " and their happiness is now " + str(king.happiness))
pC()
elif playerInput == "3":
ps("How would you like to interact with the peasants?")
gSpace()
gtextBox()
print("1. Treat noteable figures to activity")
print("2. Ask for resource")
print("3. Give money")
gtextBox()
options = ["1", "2", "3"]
playerInput = pI(options)
if playerInput == "1":
ps("You treat" + random.choice(peasantnames) + " to " + str(random.choice(activity)))
value = random.randint(1, 5)*0.001
peasants.happiness += value
calculateStats(factions)
ps("The peasants happiness is now " + str(peasant.happiness))
count += 1
pC()
elif playerInput == "2":
randomresource = random.choice(resource)
value = random.randint(1, 20)
ps("you humbly ask the peasants for" + str(randomresource) + "!")
if peasants.happiness > 0.60 and peasants.randomresource > value:
ps("The peasants fill your order! They grant you " + str(value) + " " + str(randomresource))
peasant.randomresource -= value
church.randomresource += value
count += 1
pC()
else:
ps("The peasants do not seem interested in taking any orders for " + str(randomresource))
count += 1
pC()
elif playerInput == "3":
value = random.uniform(0.001, church.wealth/3)
ps("You donate to the peasants " + str(value) + " gold! Their happiness increases by " + str(value/100))
church.wealth -= value
peasant.wealth += value
count += 1
pC()
if playerInput == "1" and count == 1:
print("You have already interacted with a faction this week!")
gameMenu()
elif playerInput == "2":
weekEnd()
count = 0
def start0():
gChurch()
time.sleep(3)
gameMenu()
#Player Data--------------------------------------------------------#
pName = "If this name is printed something is wrong"
#Start Location-----------------------------------------------------#
calculateStats(factions)
#titleScreen()
#start0()
gameMenu()
#gameOver()
我对发生这种情况的原因一无所知,如有任何见解,我们将不胜感激。谢谢!
第三块:
def gtitleScreen():
clear()
gLine()
draw("""
___________.__ __ __ __ .__ _____ __________ .__
\__ ___/| |__ ____ / \ / \___________ _/ |_| |__ _____/ ____\ \____ /____ | | ____ ____
| | | | \_/ __ \ \ \/\/ |_ __ \__ \ __\ | \ / _ \ __\ / /\__ \ | | / ___\ / _ \
| | | Y \ ___/ \ / | | \// __ \| | | Y \ ( <_> ) | / /_ / __ \| |_/ /_/ > <_> )
|____| |___| /\___ > \__/\ / |__| (____ /__| |___| / \____/|__| /_______ (____ /____|___ / \____/
\/ \/ \/ \/ \/ \/ \/ /_____/
""")
gLine()
一些 \
被转义,使用 \
来正确显示单个 \
。
试试下面的代码:
def gChurch():
clear()
gLine()
draw(""" +
|
,|,
|||
/ | \
| | |
| | |
/ | \
| | |
| | \
/ \ |
| | |
| | \
/ | |
8 | | |
''8'' / | \
8 / \ ,\
,d8888888888888|========|='' |
,d" "88888888888| ,aa, | a |
,d" "888888888| 8 8 | 8 |
,d8888888b, "8888888| 8aa8 | 8,|
,d" "8888888b, "88888|========|='''|
,d" "8888888b, "888| a a | a |
,d" ,aa, "8888888b, "8| 8 8 | 8,|
/| d' 'b |''''''| |========|='''|
| 8 8 | | | ,aa, | a |
| 8aaaa8 | | | 8 8 | 8 |
| | | | "''" | ,,=|
|aaaaaaaaaaaaaa|======''''''''''''''''''''' """)
编辑:这是通过将我的打印语句更改为 print(r""" """) 解决的 "r" 打印原始文本并忽略诸如“/”之类的符号
我正在为我的高中 AP Comp Sci 使用 ASCII 图形制作基于文本的游戏 class。我遇到的问题是,出于某种原因,我的图形(只是三重引号字符串”)的打印方式与我的 IDE 中的不同。它们总是偏离一条线或将一条线推得比它应该走的更远. 以下是我的代码的摘录,它会产生上述错误:
def draw(str):
#This function allows the game to draw graphics
for letter in str:
sys.stdout.write(letter)
sys.stdout.flush()
time.sleep(0.0001**100)
print('')
def clear():
if os.name == 'nt':
os.system('cls')
else:
os.system('clear')
def gLine():
#Function Draws lines
draw("*****************************************************************************************************************************")
def gChurch():
clear()
gLine()
draw(""" +
|
,|,
|||
/ | \
| | |
| | |
/ | \
| | |
| | \
/ \ |
| | |
| | \
/ | |
8 | | |
''8'' / | \
8 / \ ,\
,d8888888888888|========|='' |
,d" "88888888888| ,aa, | a |
,d" "888888888| 8 8 | 8 |
,d8888888b, "8888888| 8aa8 | 8,|
,d" "8888888b, "88888|========|='''|
,d" "8888888b, "888| a a | a |
,d" ,aa, "8888888b, "8| 8 8 | 8,|
/| d' 'b |''''''| |========|='''|
| 8 8 | | | ,aa, | a |
| 8aaaa8 | | | 8 8 | 8 |
| | | | "''" | ,,=|
|aaaaaaaaaaaaaa|======''''''''''''''''''''' """)
gLine()
def gGameOver():
clear()
draw("""
_____ ____
/ ____| / __ \
| | __ __ _ _ __ ___ ___ | | | |_ _____ _ __
| | |_ |/ _` | '_ ` _ \ / _ \ | | | \ \ / / _ \ '__|
| |__| | (_| | | | | | | __/ | |__| |\ V / __/ |
\_____|\__,_|_| |_| |_|\___| \____/ \_/ \___|_|
""")
def event():
if Zalgo.happiness < 60:
gChurch()
ps("Zalgo is dissatisfied with your level of faithfullness. A thunderstorm is heard overhead...")
chance = random.randint(1, 4)
ps("Rolling dice...")
if chance == 1:
ps("You have been smitten!")
print("You have died")
time.sleep(3)
gameOver()
else:
ps("Lightning cracks overhead, but does not strike you. Zalgo has forgiven you... You live another day")
此代码本身会无缘无故地导致教堂中的一条线路快速移动。我已经查看代码至少 40 次,但仍然没有找到它应该这样做的理由。如果您想复制并粘贴它并亲自查看错误,这是我游戏的完整代码:
#Made by Nick Pope -------------------------------------------------#
import sys
import os
import time
import random
#Screen-------------------------------------------------------------#
os.system("mode con cols=125")
#Width of Screen
os.system("mode con lines=50")
#Length of Screen
#Commands-----------------------------------------------------------#
commands = ["//options, //Help"]
#Lists--------------------------------------------------------------#
activity = ["Example Activity 1.", "Example activity 2"]
resource = ["wealth","food","land"]
#Functions----------------------------------------------------------#
def save():
print("This is supposed to save, but it doesn't work yet")
def load():
print("This is supposed to load, but it doesn't work yet")
def clear():
if os.name == 'nt':
os.system('cls')
else:
os.system('clear')
def back():
titleScreen()
def wait():
wait = input("Press Enter to continue: ")
def pI(options):
#PI stands for Player Input
playerInput = (input("==> "))
gSpace()
while playerInput not in options and playerInput not in commands:
print(playerInput + " is not a possible option")
print("Do /options for a list of acceptable options")
playerInput = (input("==> "))
if playerInput == "/commands":
print(commands)
elif playerInput == "//options":
print("Acceptable inouts are" + options)
elif playerInput == "//help":
gHelp()
return(playerInput)
def pC():
#"pC" stands for "playerContinue" This function is essentially a fancy "Wait" function
playerInput = input("Enter anything to continue ==> ")
def name ():
playerInput = input("==> ")
for i in playerInput:
while " " in playerInput:
print("You may not uses spaces in your name, try again")
playerInput = input("==> ")
return (playerInput)
#Text Functions-----------------------------------------------------#
def ps(str):
#This function allows the game to type slowly with textwrap
#PS is short for "Print Statement"
typing_speed = len(str) * 5
count = 0
space = False
#This next aspect of the function works with the autotext wrap
#To make sure that it only wraps after full words, not
#midway through
for letter in str:
count += 1
if letter == " " or letter == "":
space = True
else:
space = False
if count >= 100 and len(str) < 200 and space == True:
print('\n')
count = 0
sys.stdout.write(letter)
sys.stdout.flush()
time.sleep(random.random()*10.0/typing_speed)
print('')
def draw(str):
#This function allows the game to draw. I made this so that when
#displays load faster than normal text
for letter in str:
sys.stdout.write(letter)
sys.stdout.flush()
time.sleep(0.0001**100)
print('')
#Graphics-----------------------------------------------------------#
#All Graphic functions start with "g" so that i don't take any
#names I might need later
def gSpace():
print(" ")
def gLine():
#Function Draws lines
draw("*****************************************************************************************************************************")
def gtextBox():
draw("##########################")
def gNextWeek():
gLine()
draw("""
_______ __ __ __ __
\ \ ____ ___ ____/ |_ / \ / \ ____ ____ | | __
/ | \_/ __ \ \/ /\ __\ \ \/\/ // __ \_/ __ \| |/ /
/ | \ ___/ > < | | \ /\ ___/\ ___/| <
\____|__ /\___ >__/\_ \ |__| \__/\ / \___ >\___ >__|_ \
\/ \/ \/ \/ \/ \/ \/
""")
gLine()
def gtitleScreen():
clear()
gLine()
draw("""
___________.__ __ __ __ .__ _____ __________ .__
\__ ___/| |__ ____ / \ / \___________ _/ |_| |__ _____/ ____\ \____ /____ | | ____ ____
| | | | \_/ __ \ \ \/\/ |_ __ \__ \ __\ | \ / _ \ __\ / /\__ \ | | / ___\ / _ \
| | | Y \ ___/ \ / | | \// __ \| | | Y \ ( <_> ) | / /_ / __ \| |_/ /_/ > <_> )
|____| |___| /\___ > \__/\ / |__| (____ /__| |___| / \____/|__| /_______ (____ /____|___ / \____/
\/ \/ \/ \/ \/ \/ \/ /_____/
""")
gLine()
def gExit():
clear()
#save()
gLine()
draw("""
___________ .__ __ .__
\_ _____/__ __|__|/ |_|__| ____ ____
| __)_\ \/ / \ __\ |/ \ / ___\
| \> <| || | | | | \/ /_/ >
/_______ /__/\_ \__||__| |__|___| /\___ / /\ /\ /\ /\ /\ /\ /\
\/ \/ \//_____/ \/ \/ \/ \/ \/ \/ \/""")
gLine()
time.sleep(3)
sys.exit
def gHelp():
clear()
gLine()
draw("""
___ ___ .__ _____
/ | \ ____ | | ______ / \ ____ ____ __ __
/ ~ \/ __ \| | \____ \ / \ / \_/ __ \ / \| | \
\ Y | ___/| |_| |_> > / Y \ ___/| | \ | /
\___|_ / \___ >____/ __/ \____|__ /\___ >___| /____/
\/ \/ |__| \/ \/ \/
""")
gLine()
print("Welcome to the help menu! This game was made by nick pope")
print("1. Go Back")
options = ["1"]
playerInput = pI(options)
if pI == "1":
(back())
def gGameOver():
clear()
draw("""
_____ ____
/ ____| / __ \
| | __ __ _ _ __ ___ ___ | | | |_ _____ _ __
| | |_ |/ _` | '_ ` _ \ / _ \ | | | \ \ / / _ \ '__|
| |__| | (_| | | | | | | __/ | |__| |\ V / __/ |
\_____|\__,_|_| |_| |_|\___| \____/ \_/ \___|_|
""")
def gNorthernLights():
gLine()
draw(""" ` : | | | |: || : ` : | |+|: | : : :| . `
` : | :| || |: : ` | | :| : | : |: | . :
.' ': || |: | ' ` || | : | |: : | . ` . :.
`' || | ' | * ` : | | :| |*| : : :|
* * ` | : : | . ` ' :| | :| . : : * :.||
.` | | | : .:| ` | || | : |: | | ||
' . + ` | : .: . '| | : :| : . |:| ||
. . ` *| || : ` | | :| | : |:| |
. . . || |.: * | || : : :|||
. . . * . . ` |||. + + '| ||| . ||`
. * . +:`|! . |||| :.||`
+ . ..!|* . | :`||+ |||`
. + : |||` .| :| | | |.| ||` .
* + ' + :|| |` :.+. || || | |:`|| `
. .||` . ..|| | |: '` `| | |` +
. +++ || !|!: ` :| |
+ . . | . `|||.: .|| . . `
' `|. . `:||| + ||' `
__ + * `' `'|. `:
"' `---''''----....____,..^---`^``----.,.___ `. `. . ____,.,-
___,--''''`---'' ^ ^ ^ ^ """'---,..___ __,..---'''
"' ^ ``--..,__ """)
gLine()
def gChurch():
clear()
gLine()
draw(""" +
|
,|,
|||
/ | \
| | |
| | |
/ | \
| | |
| | \
/ \ |
| | |
| | \
/ | |
8 | | |
''8'' / | \
8 / \ ,\
,d8888888888888|========|='' |
,d" "88888888888| ,aa, | a |
,d" "888888888| 8 8 | 8 |
,d8888888b, "8888888| 8aa8 | 8,|
,d" "8888888b, "88888|========|='''|
,d" "8888888b, "888| a a | a |
,d" ,aa, "8888888b, "8| 8 8 | 8,|
/| d' 'b |''''''| |========|='''|
| 8 8 | | | ,aa, | a |
| 8aaaa8 | | | 8 8 | 8 |
| | | | "''" | ,,=|
|aaaaaaaaaaaaaa|======''''''''''''''''''''' """)
gLine()
#Factions Zalgo, King, Clergy, Peasant------------------------------#
class faction():
def __init__(self, name, happiness, population, wealth, food, land):
self.name = name
self.happiness = happiness
self.population = population
self.wealth = wealth
self.food = food
self.land = land
Zalgo = faction(
"Zalgo",
0.100,
1,
50,
25,
0)
church = faction(
"church",
0.100,
16,
50,
25,
5)
king = faction(
"king",
0.100,
1,
50,
100,
50)
peasants = faction(
"peasants",
0.100,
1000,
20,
25,
100)
factions = [Zalgo, church, king, peasants]
#Mechanics----------------------------------------------------------#
def weekEnd():
week += 1
calculateStats(factions)
gNextWeek()
def zalgo():
print("Zalgo mechanics are not done yet")
def calculateStats(factions):
for i in factions:
#Faction Food Falculation
i.food += i.land*0.7 + i.population*0.3
#Faction Wealth Calculation
i.wealth += i.food*0.4 + i.land*0.6
#Faction Happiness Calculation
i.happiness = i.wealth*0.5 + i.food*0.3 + i.land*0.2
if i.happiness > 100:
i.happiness = 100
def gameOver():
gGameOver()
ps("Would you like to play again?")
gtextBox()
print("1. Yes")
print("2. No")
gtextBox()
options = ["1","2"]
playerInput = pI(options)
if playerInput == "1":
titleScreen()
elif playerInput == "2":
titleScreen()
#Events-------------------------------------------------------------#
def event():
if Zalgo.happiness < 60:
gChurch()
ps("Zalgo is dissatisfied with your level of faithfullness. A thunderstorm is heard overhead...")
chance = random.randint(1, 4)
ps("Rolling dice...")
if chance == 1:
ps("You have been smitten!")
print("You have died")
time.sleep(3)
gameOver()
else:
ps("Lightning cracks overhead, but does not strike you. Zalgo has forgiven you... You live another day")
elif king.happiness < 60:
gChurch()
ps("The King summons you to his chamber..")
chance = random.randint(1, 4)
ps("Rolling dice...")
if chance == 1:
ps("The king ambushes you and takes your head!")
print("You have died")
time.sleep(3)
gameOver()
else:
ps("The king forgives you, you live to see another day")
elif church.happiness < 60:
gChurch()
ps("The church is disastisfied by your leadership! They staged a coup!")
chance = random.randint(1, 4)
ps("Rolling dice...")
if chance == 1:
ps("You have been smitten zalgo!")
print("You have died")
time.sleep(3)
gameOver()
else:
ps("The disscuss better leadership techniques with you.. you live to see another day")
elif peasants.happiness < 60:
gChurch()
ps("The peasants revolt and enter the church.")
chance = random.randint(1, 4)
ps("Rolling dice...")
if chance == 1:
ps("The peasants stab you 23 times..you resemble a salad")
print("You have died")
time.sleep(3)
gameOver()
else:
ps("You manage to convince the peasants to go home, or face the wrath of Zalgo. You live another day")
time.sleep(3)
#Game Loop----------------------------------------------------------#
def titleScreen():
clear()
pCS = titleScreen
gtitleScreen()
ps("1. Start")
ps("2. Load")
ps("3. Exit")
ps("4. Help")
options = ["1","2","3","4"]
playerInput = pI(options)
if playerInput == "1":
start0()
pCS = start0()
if playerInput == "2":
gload()
if playerInput == "3":
gExit()
if playerInput == "4":
gHelp()
def gameMenu():
clear()
count = 0
#When this count reaches 1, A faction has been interacted with, and another interaction may not occur
event()
zalgo()
ps("What would you like to do?")
gSpace()
gtextBox()
print("1. Interact with Faction")
print("2. End Turn")
gtextBox()
options = ["1", "2"]
playerInput = pI(options)
if playerInput == "1":
while count < 1:
ps("Which faction do you want to interact with?")
gtextBox()
print("1. Church")
print("2. King")
print("3. Peasants")
gtextBox()
options = ["1", "2", "3"]
playerInput = pI(options)
if playerInput == "1":
ps("How would you like to interact with church?")
gSpace()
gtextBox()
print("1. Treat to activity")
print("2. Ask for resource")
print("3. Give money")
gtextBox()
options = ["1","2","3"]
playerInput = pI(options)
if playerInput == "1":
ps("You treat the clergy of the church to " + str(random.choice(activity)))
value = random.randint(1, 5)*0.001
church.happiness += value
calculateStats(factions)
ps("The church's happiness is now " + str(church.happiness))
count += 1
pC()
elif playerInput == "2":
ps("you ask the clergy of the church for " + str(random.choice(resource)) + "! But since you and the clergy are the church, nothing is gained")
count += 1
pC()
elif playerInput == "3":
value = random.uniform(0.005, church.wealth)
ps("You give the clergy of your church " + str(value) + " gold! Their happiness increases by" + str(value))
church.wealth -= value
count += 1
pC()
elif playerInput == "2":
ps("How would you like to interact with the King?")
gSpace()
gtextBox()
print("1. Treat to activity")
print("2. Ask for resource")
print("3. Give money")
gtextBox()
options = ["1", "2", "3"]
playerInput = pI(options)
if playerInput == "1":
ps("You treat the King to " + str(random.choice(activity)))
value = random.randint(1, 5)*0.001
king.happiness += value
calculateStats(factions)
ps("The King's happiness is now " + str(king.happiness))
count += 1
pC()
elif playerInput == "2":
randomresource = random.choice(resource)
value = randint(1, 20)
ps("you ask the King for " + str(randomresource) + "!")
if king.happiness > 0.70:
ps("The king is in good spirits! He grants you " + str(value) + " " + str(randomresource))
ps("You now have " + str(church.randomresource) + " " + str(randomresource))
king.randomresource -= value
church.randomresource += value
count += 1
pC()
else:
ps("The king does not seem interested in loaning you any " + str(randomresource))
count += 1
pC()
elif playerInput == "3":
value = random.uniform(0.001, church.wealth/3)
church.wealth -= value
king.wealth += value
calculateStats(factions)
count += 1
ps("You give the King " + str(value) + " gold! Their happiness increases by " + str(value*0.001) + " and their happiness is now " + str(king.happiness))
pC()
elif playerInput == "3":
ps("How would you like to interact with the peasants?")
gSpace()
gtextBox()
print("1. Treat noteable figures to activity")
print("2. Ask for resource")
print("3. Give money")
gtextBox()
options = ["1", "2", "3"]
playerInput = pI(options)
if playerInput == "1":
ps("You treat" + random.choice(peasantnames) + " to " + str(random.choice(activity)))
value = random.randint(1, 5)*0.001
peasants.happiness += value
calculateStats(factions)
ps("The peasants happiness is now " + str(peasant.happiness))
count += 1
pC()
elif playerInput == "2":
randomresource = random.choice(resource)
value = random.randint(1, 20)
ps("you humbly ask the peasants for" + str(randomresource) + "!")
if peasants.happiness > 0.60 and peasants.randomresource > value:
ps("The peasants fill your order! They grant you " + str(value) + " " + str(randomresource))
peasant.randomresource -= value
church.randomresource += value
count += 1
pC()
else:
ps("The peasants do not seem interested in taking any orders for " + str(randomresource))
count += 1
pC()
elif playerInput == "3":
value = random.uniform(0.001, church.wealth/3)
ps("You donate to the peasants " + str(value) + " gold! Their happiness increases by " + str(value/100))
church.wealth -= value
peasant.wealth += value
count += 1
pC()
if playerInput == "1" and count == 1:
print("You have already interacted with a faction this week!")
gameMenu()
elif playerInput == "2":
weekEnd()
count = 0
def start0():
gChurch()
time.sleep(3)
gameMenu()
#Player Data--------------------------------------------------------#
pName = "If this name is printed something is wrong"
#Start Location-----------------------------------------------------#
calculateStats(factions)
#titleScreen()
#start0()
gameMenu()
#gameOver()
我对发生这种情况的原因一无所知,如有任何见解,我们将不胜感激。谢谢!
第三块:
def gtitleScreen():
clear()
gLine()
draw("""
___________.__ __ __ __ .__ _____ __________ .__
\__ ___/| |__ ____ / \ / \___________ _/ |_| |__ _____/ ____\ \____ /____ | | ____ ____
| | | | \_/ __ \ \ \/\/ |_ __ \__ \ __\ | \ / _ \ __\ / /\__ \ | | / ___\ / _ \
| | | Y \ ___/ \ / | | \// __ \| | | Y \ ( <_> ) | / /_ / __ \| |_/ /_/ > <_> )
|____| |___| /\___ > \__/\ / |__| (____ /__| |___| / \____/|__| /_______ (____ /____|___ / \____/
\/ \/ \/ \/ \/ \/ \/ /_____/
""")
gLine()
一些 \
被转义,使用 \
来正确显示单个 \
。
试试下面的代码:
def gChurch():
clear()
gLine()
draw(""" +
|
,|,
|||
/ | \
| | |
| | |
/ | \
| | |
| | \
/ \ |
| | |
| | \
/ | |
8 | | |
''8'' / | \
8 / \ ,\
,d8888888888888|========|='' |
,d" "88888888888| ,aa, | a |
,d" "888888888| 8 8 | 8 |
,d8888888b, "8888888| 8aa8 | 8,|
,d" "8888888b, "88888|========|='''|
,d" "8888888b, "888| a a | a |
,d" ,aa, "8888888b, "8| 8 8 | 8,|
/| d' 'b |''''''| |========|='''|
| 8 8 | | | ,aa, | a |
| 8aaaa8 | | | 8 8 | 8 |
| | | | "''" | ,,=|
|aaaaaaaaaaaaaa|======''''''''''''''''''''' """)