Files
project_game/questioner.py
caglazir 954d429379 In this submission I wrapped up my game project!!
I fixed up some issues that I noticed I have been having such as my answers
for the input being read as wrong even though it shouldn't be. I figured
out that if I had pressed another key, my strip & upper won't get rid of
those keystrokes so I added a buffer between the question input and the
reaction time to game stopping so that the arrows wouldn't become part of
the answers. I think overall I am proud of my progress. I learned and
practiced many things such as the os clear screen, classes, methods, etc.
One thing that I wish I knew how to do was changing the font of certain
outputs. I saw that I can do this via VSC preferences but I would love to
pick and choose which texts appears in which font. The answers on
stackexchange etc. seemed a bit too complex for me at the moment. But if
I ever revisit this game, I would love to improve its visual aspects.

If I were to implement this project in my classroom, I definitely would
take some extra time practicing if/elif/else statements that are more than
3+ lines. I found that critical for my game and I think it would be
applicable to many other games. Additionally, I think this game is a great
wrap-up project but I can't say that the scaffolding has been appropriate
or 100% relevant leading up to this point. I did not utilize majority of
the other lab aspects. That could just be me though but I felt a disconnect,
which I guess is also inevitable because of our course being asynchronous.
In a classroom setting this could easily be managed.

Overall I loved developing this and I am happy with my results, though I
would love to improve upon it in the future!
2025-12-14 13:02:32 -05:00

149 lines
6.1 KiB
Python

import os
from time import sleep
class Questioner:
name = "Questioner"
character = '?'
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
def __init__(self, board_size):
board_width, board_height = board_size
self.position = (board_width // 2, board_height // 2)
self.score_prompt = 200
self.speak = True
def play_turn(self,game):
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
score=game.state.get("score", 0)
person = game.get_agent_by_name('Person')
if not person:
return
personx, persony = person.position
questionerx, questionery = self.position
if personx == questionerx and persony == questionery +1:
if score == 0 and self.speak:
prompt = input("Questioner: Are you ready to start the game? [[Y/N]] \n")
if prompt.strip().upper() == "Y":
print("Questioner: Well then, the rules are as follows... \n 1. You have 3 lives. \n 2. For every 200 points you accumulate during Starfall, you receive a question. \n 3. Each wrong answer costs you a life. You must answer 3 questions to escape this terminal. \n 4. You MUST enter NUMBERS ONLY.")
begin = input("Questioner: Shall we begin? [[Y/N]] \n" )
if begin.strip().upper() == "Y":
input("Questioner: Well then, good luck player \n Come back to me once you accumulate 200 points! \n (PRESS ANY KEY TO CONTINUE) ")
game.state["begin"] = True
clear_screen()
elif prompt.strip().upper() == "N":
print("Questioner: I'll be here when you're ready to restart. \n")
game.state["begin"] = False
else:
print("Questioner: What now? (RESTART) \n")
game.state["begin"] = False
self.speak = False
if score == 200:
game.state["begin"] = False
self.ask_question_1(game)
if score == 400:
game.state["begin"] = False
self.ask_question_2(game)
if score == 600:
game.state["begin"] = False
self.ask_question_3(game)
def ask_question_1(self,game):
score=game.state.get("score")
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
if score == 200:
game.state["begin"] = False
self.score_prompt += 200
self.speak = True
qbuffer = input("QUESTION INCOMING (PRESS ANY KEY TO CONTINUE) \n ")
question_1 = input("Very well, here is the first question: \n What is the square root of 64? \n" )
if int(question_1) == 8:
print("You may proceed. See you again once you reach 400 points! \n ")
else:
print("HMPH! WRONG!! YOU HAVE TWO LIVES REMAINING. \n ")
game.state['lives'] = 2
proceed_1 = input("Shall we continue? [[Y/N]]")
if proceed_1.strip().upper() == "Y":
game.state["begin"] = True
self.speak = False
clear_screen()
else:
print("I don't take this as an answer... CONTINUE!")
game.state["begin"] = True
self.speak = False
clear_screen()
def ask_question_2(self,game):
score=game.state.get("score")
life = game.state.get("lives")
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
if score == 400:
game.state["begin"] = False
self.score_prompt += 200
self.speak = True
qbuffer = input("QUESTION INCOMING (PRESS ANY KEY TO CONTINUE) \n ")
question_2 = input("What number is the element 'Argon'? \n")
if int(question_2) == 18:
print("You may proceed. See you again once you reach 600 points! \n")
else:
if life == 2:
print("HMPH! WRONG!! YOU HAVE ONE LIFE REMAINING.")
game.state['lives'] = 1
if life == 3:
print("HMPH! WRONG!! YOU HAVE TWO LIVES REMAINING.")
game.state['lives'] = 2
proceed_2 = input("Shall we continue? [[Y/N]]")
if proceed_2.strip().upper() == "Y":
game.state["begin"] = True
self.speak = False
clear_screen()
else:
print("I don't take this as an answer... CONTINUE!")
game.state["begin"] = True
self.speak = False
clear_screen()
def ask_question_3(self,game):
score=game.state.get("score")
life = game.state.get("lives")
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
if score == 600:
game.state["begin"] = False
self.score_prompt += 200
self.speak = True
qbuffer = input("QUESTION INCOMING (PRESS ANY KEY TO CONTINUE) \n ")
clear_screen()
question_3 = input("How many states make up the USA? \n")
if int(question_3) == 50:
print("Correct!")
if life >= 1:
clear_screen()
print("CONGRATULATIONS! YOU MAY ESCAPE THE TERMINAL. \n")
else:
if life == 1:
clear_screen()
print("HAHAHAHA WRONG ANSWER! YOU ARE OUT OF LIVES! \n")
print("YOU LOST THE GAME!")
if life == 2:
clear_screen()
print("HMPH! WRONG!! BUT YOU SURVIVE WITH ONE LIFE REMAINING.")
game.state["lives"] = 1
if life ==3:
clear_screen()
print("HMPH! WRONG!! BUT YOU SURVIVE WITH TWO LIVES REMAINING.")
game.state['lives'] = 2
self.speak = False