Napisz grę tekstową polegającą na poszukiwaniu skarbu na dwuwymiarowej planszy o
rozmiarach 10 na 10.
Program na początku losuje pozycję skarbu oraz pozycję gracza.
Następnie użytkownik może wprowadzać komendy zmieniające położenie postaci o jedną
pozycję w górę/dół/lewo/prawo (np zgodnie z konwencją WSAD) – normalnie za pomocą input.
Gdy gracz wejdzie na pole, na którym kryje się skarb – wygrywa.
Gdy wyjdzie poza planszę – przegrywa.
Po każdym ruchu użytkownik powinien otrzymywać informację o tym, czy zmierza w dobrym
kierunku. Po znalezieniu skarbu wypisz liczbę ruchów wykorzystanych przez użytkownika na
dojście do celu.
Ok, co już masz. Z czym problem? Bo jeśli chcesz gotowca to zły dział i nie podałeś stawki
Inicjalizacja planszy: Stwórz dwuwymiarową tablicę o wymiarach 10x10. Możesz to zrobić za pomocą listy list w Pythonie.
plansza = [[0]*10 for _ in range(10)]
Losowanie pozycji skarbu i gracza: Użyj funkcji randint z modułu random do losowania pozycji skarbu i gracza. Upewnij się, że te dwie pozycje nie są takie same.
import random
pozycja_gracza = [random.randint(0, 9), random.randint(0, 9)]
pozycja_skarbu = [random.randint(0, 9), random.randint(0, 9)]
Pętla gry: Stwórz pętlę while, która będzie trwać dopóki gracz nie znajdzie skarbu lub nie wyjdzie poza planszę.
while True:
# kod gry
Starczy, dalej pokaż, czy w ogóle coś umiesz. Jeżeli jesteś leniwym studentem, który w ogóle się na tym nie zna, to szukaj kogoś za kasę, jak już napisano powyżej.
frz napisał(a):
Inicjalizacja planszy: Stwórz dwuwymiarową tablicę o wymiarach 10x10. Możesz to zrobić za pomocą listy list w Pythonie.
plansza = [[0]*10 for _ in range(10)]
Losowanie pozycji skarbu i gracza: Użyj funkcji randint z modułu random do losowania pozycji skarbu i gracza. Upewnij się, że te dwie pozycje nie są takie same.
import random pozycja_gracza = [random.randint(0, 9), random.randint(0, 9)] pozycja_skarbu = [random.randint(0, 9), random.randint(0, 9)]
Pętla gry: Stwórz pętlę while, która będzie trwać dopóki gracz nie znajdzie skarbu lub nie wyjdzie poza planszę.
while True: # kod gry
Starczy, dalej pokaż, czy w ogóle coś umiesz. Jeżeli jesteś leniwym studentem, który w ogóle się na tym nie zna, to szukaj kogoś za kasę, jak już napisano powyżej.
Dzięki popróbuję podziałać dalej. Jestem tu nowy i jeszcze nie za wiele potrafię. Jak to rozwiążę to tu zamieszczę swoje rozwiązanie. Jeszcze raz dziękuje za podpowiedz
import random
import math
# Define the size of the map
MAP_SIZE = 10
moves = 0;
# Initialize the map
map_grid = [['.' for _ in range(MAP_SIZE)] for _ in range(MAP_SIZE)]
# Generate random starting position for the player and prevent to start on the edge
player_x, player_y = random.randint(1, MAP_SIZE - 2), random.randint(1, MAP_SIZE - 2)
# Generate random position for the hidden treasury
treasury_x, treasury_y = random.randint(0, MAP_SIZE - 1), random.randint(0, MAP_SIZE - 1)
# Ensure player and treasury positions are not the same
while (player_x, player_y) == (treasury_x, treasury_y):
treasury_x, treasury_y = random.randint(0, MAP_SIZE - 1), random.randint(0, MAP_SIZE - 1)
# Main game loop
while True:
while True:
if pozycja_gracza == pozycja_skarbu:
print('Brawo znalazłeś skarb!')
elif pozycja_gracza != pozycja_skarbu:
print('Zmień pozycję gracza')
zmiana_pozycji= input('Zmiana pozycji:''góra''dół''prawo' 'lewo')
pozycja_gracza== 'prawo'
pozycja_gracza[0]= pozycja_gracza [+ 1]
print(pozycja_gracza)
Czy ja idę w dobrym kierunku?
Można tak, sprawdź if-em którą pozycję wpisał gracz.
Zamiast pozycja_gracza[0]= pozycja_gracza [+ 1]
powinno być pozycja_gracza[0]=pozycja_gracza[0] + 1
lub w skrócie pozycja_gracza[0] + = 1
.
Wykorzystaj ChatGPT (lub podobny), będzie Ci łatwiej i szybciej
Telefoniak napisał(a):
Wykorzystaj ChatGPT (lub podobny), będzie Ci łatwiej i szybciej
Tylko trzeba mieć na uwadze że ChatGPT tak żeby nie miał błędów pisze tylko kod który jest bardzo, bardzo prosty. Z chociaż trochę skomplikowanymi problemami zaczyna pisać głupoty i zmyśla.
Popracowałem z generatorem (jeszcze jak będę miał czas i chęci to dodam coś ciekawego) moja wersja tej prostej gry jest taka:
import random
import math
# Define the size of the map
MAP_SIZE = 10
EDGE_PADDING = 1
moves = 0
magic_scroll = 3
# Initialize the map
map_grid = [['.' for _ in range(MAP_SIZE)] for _ in range(MAP_SIZE)]
# Generate random starting position for the player and prevent it from starting on the edge
player_x, player_y = random.randint(1, MAP_SIZE - EDGE_PADDING - 1), random.randint(1, MAP_SIZE - EDGE_PADDING - 1)
# Generate random position for the hidden treasury
treasury_x, treasury_y = random.randint(0, MAP_SIZE - 1), random.randint(0, MAP_SIZE - 1)
# Ensure player and treasury positions are not the same
while (player_x, player_y) == (treasury_x, treasury_y):
treasury_x, treasury_y = random.randint(0, MAP_SIZE - 1), random.randint(0, MAP_SIZE - 1)
# Function to print the map
def print_map():
for row in range(MAP_SIZE):
for col in range(MAP_SIZE):
if row == player_y and col == player_x:
print('☺', end=' ') # Print player symbol: ☺
elif row == treasury_y and col == treasury_x:
print('$', end=' ') # Print treasury symbol: $
else:
print(map_grid[row][col], end=' ')
print()
# Hello player
print('Welcome to the Treasure Hunt Game!\nBe careful not to cross the edge of the map!')
# Main game loop
while True:
# Update the map with the player's position
map_grid[player_y][player_x] = 'x'
# Check if the player has reached the treasury
if player_x == treasury_x and player_y == treasury_y:
print('Congratulations! You found the hidden treasury. You win! \nNumber of moves made:', moves)
if magic_scroll < 3:
print('You used magic scroll at last once :(')
print_map()
break
# Calculate the distance between the player and the treasury
distance_before_move = math.sqrt((player_x - treasury_x) ** 2 + (player_y - treasury_y) ** 2)
# Get the player's move input
move = input('Enter direction (W/A/S/D) or Q to quit: ').upper()
# Update the player's position based on the input
if move == 'W' and player_y > 0:
player_y -= 1
moves += 1
elif move == 'A' and player_x > 0:
player_x -= 1
moves += 1
elif move == 'S' and player_y < MAP_SIZE - 1:
player_y += 1
moves += 1
elif move == 'D' and player_x < MAP_SIZE - 1:
player_x += 1
moves += 1
elif move == 'M':
if magic_scroll <= 0:
print('Unfortunately, your scroll has already burned out.')
else:
print_map()
magic_scroll -= 1
elif move == 'Q':
print('Exiting the game. Goodbye!')
break
else:
print('Invalid move. Please enter W, A, S, or D.')
# Check if the player is at the edge of the map
if player_x == 0 or player_x == MAP_SIZE - 1 or player_y == 0 or player_y == MAP_SIZE - 1:
print('You are standing on the edge of the map.')
# Check if the player has crossed the edge of the map
if player_x < 0 or player_x >= MAP_SIZE or player_y < 0 or player_y >= MAP_SIZE:
print('You have crossed the edge of the map. Game over!')
break
# Calculate the distance between the player's new position and the treasury
distance_after_move = math.sqrt((player_x - treasury_x) ** 2 + (player_y - treasury_y) ** 2)
# Check if the distance decreases after the player moves
if distance_after_move < distance_before_move:
print('You are getting closer to the treasury!')
elif distance_after_move > distance_before_move:
print('You are moving away from the treasury!')