rioanggara's picture
please work
2bd545f
raw
history blame
2.43 kB
import gradio as gr
import random
def initialize_game():
# Initialize or reset the game state
game_state = {
'height': 0,
'gap_position': 2,
'bird_position': 2,
'score': 0,
'game_over': False
}
return get_game_state(game_state), game_state
def update_game(command, game_state):
PIPE_WIDTH = 3
GAME_HEIGHT = 5
GAP_SIZE = 2
if game_state['game_over'] or command == "start":
return initialize_game()
# Move bird based on command
game_state['bird_position'] += 1 if command.lower() != "flap" else -1
# Check bounds
if game_state['bird_position'] < 0 or game_state['bird_position'] >= GAME_HEIGHT:
game_state['game_over'] = True
return f"You hit the top/bottom! Game Over! Your score: {game_state['score']}", game_state
# Update pipe position
game_state['height'] = (game_state['height'] + 1) % (PIPE_WIDTH + GAME_HEIGHT)
# Check for collision or passing through the gap
if game_state['height'] == PIPE_WIDTH:
if game_state['bird_position'] not in range(game_state['gap_position'], game_state['gap_position'] + GAP_SIZE):
game_state['game_over'] = True
return f"You hit a pipe! Game Over! Your score: {game_state['score']}", game_state
else:
game_state['score'] += 1
game_state['gap_position'] = random.randint(0, GAME_HEIGHT - GAP_SIZE)
return get_game_state(game_state), game_state
def get_game_state(game_state):
PIPE_WIDTH = 3
GAME_HEIGHT = 5
GAP_SIZE = 2
display = "Score: {}\n".format(game_state['score'])
for i in range(GAME_HEIGHT):
line = ""
if game_state['height'] < PIPE_WIDTH and (i < game_state['gap_position'] or i >= game_state['gap_position'] + GAP_SIZE):
line += "|"
else:
line += " "
line += "B" if i == game_state['bird_position'] else "_"
line += "\n"
display += line
return display
iface = gr.Interface(
fn=update_game,
inputs=[
gr.Dropdown(choices=["flap", "start"], label="Control"),
gr.State()
],
outputs=[
gr.Textbox(label="Game State"),
gr.State()
],
title="Simple Text-based Flappy Bird Game",
description="Use the dropdown to 'Start' the game or 'Flap' to move the bird up. Avoid the pipes!"
)
if __name__ == "__main__":
iface.launch()