Losowanie różnych cyfr w grze "memory".

0

Ostatnio dla treningu napisałem taką prostą aplikację, niejako "symulującą" grę w memory (superpamięć, pamięć). Wszystko fajnie bangla, tylko nie bardzo wiem jak zrobić, żeby cyfry się nie powtarzały, tzn. była jedna możliwa połączenia 1 z 1 itd.

# -*- coding: utf-8 -*-
"""
Created on Thu Oct 11 09:05:20 2018

@author: bidzi
"""

import random
x = int(input("Podaj wielkosc planszy: "))
plansza = []
odgadniete = []
for i in range(0,x):
    plansza.append([])
    for y in range(0,x):
        liczba = random.randint(0, 5)
        plansza[i].append(liczba)
print("Plansza")
for z in plansza:
    print(z)
licznik = 0
p = 0
punkty = 0
plansza2 = []
for i in range(0,x):
    plansza2.append([])
    for y in range(0,x):
        plansza2[i].append(False)
print("Plansza2")
for h in plansza2:
    print(h)
proby = int(input("Podaj ilosc prob: "))
while p < proby:
    polex = int(input("Podaj pierwsza wspolrzedna dla pierwszej liczby: "))
    poley = int(input("Podaj druga wspolrzedna dla pierwszej liczby: "))
    if (plansza2[polex][poley] == True):
        print("Uzyles juz tego pola!")
        polex = int(input("Podaj pierwsza wspolrzedna dla pierwszej liczby: "))
        poley = int(input("Podaj druga wspolrzedna dla pierwszej liczby: "))
    if(polex >= x and poley >= x):
        print("Przekroczyles zakres planszy!")
    else:
        print("Pole, które trafiłes to: ", plansza[polex][poley])
    polex2 = int(input("Podaj pierwsza wspolrzedna dla drugiej liczby: "))
    poley2 = int(input("Podaj druga wspolrzedna dla drugiej liczby: "))
    if (plansza2[polex2][poley2] == True):
        print("Uzyles juz tego pola!")
        polex2 = int(input("Podaj pierwsza wspolrzedna dla drugiej liczby: "))
        poley2 = int(input("Podaj druga wspolrzedna dla drugiej liczby: "))
    proby -= 1    
    if(polex2 >= x and poley2 >= x):
        print("Przekroczyles zakres planszy!")
    else:
        print("Pole, które trafiłes to: ", plansza[polex2][poley2])
    if plansza[polex][poley] == plansza[polex2][poley2]:
        print("Brawo, udalo sie!")
        punkty += 1
        print("Posiadasz", punkty, "punktów")
        plansza2[polex][poley] = True
        plansza2[polex2][poley2] = True
        print("Plansza2")
        for h in plansza2:
            print(h)
    else:
        print("Sprobuj ponownie")
        

1

"tylko nie bardzo wiem jak zrobić, żeby cyfry się nie powtarzały, tzn. była jedna możliwa połączenia 1 z 1 itd." Napisz coś więcej i nie po polskiemu:)

2

Po pierwsze to podziel ten kod na małe funkcje, robiące konkretne rzeczy.
Po drugie nadaj zmiennym sensowne nazwy, bo plansza2 czy licznik (czego?) niewiele mówią.
3: liczba = random.randint(0, 5) przedział losowanych liczb zależy od wielkości planszy. Poza tym chyba najprościej będzie wypełnić planszę numerami po kolei, a potem tylko wymieszać za pomocą random.shuffle
4: Cała pętla while do poprawy i rozbicia na funkcje

0

Skożystaj z czegoś takiego jak set.

1 użytkowników online, w tym zalogowanych: 0, gości: 1