Visto che ho cominciato da poco a studiare il linguaggio Python, mi è venuta in mente l'idea di provare a creare un piccolo programmino che esegua il famoso giochino del Tic Tac Toe, utilizzando le nozioni apprese finora.
Piccolo screen della partita demo:
Pertanto vi lascio in calce il codice utilizzato così se qualcuno fosse interessato a prenderne visione o a provarlo sul suo pc, lo può fare senza problemi, magari lasciando anche un feedback su eventuali modifiche o migliorie da apporre.
La speranza è anche quella di alimentare, con il tempo, la sezione dedicata agli altri linguaggi utili per l'analisi dati e la BI in generale, non solo quelle di PowerQuery e Power Bi (che per carità ci fa sempre piacere ricevere quesiti dagli utenti ).
Io nel frattempo continuerò ad approfondire queste tematiche, così che un domani possa fare del mio meglio per fornire un aiuto a tutti coloro che ne faranno richiesta.
Buon proseguimento con lo studio della Bi a tutti quanti
A presto,
Andrea
Codice: Seleziona tutto
d = {1:1,2:5,3:9}
b = {"11":" ","12":" ","13":" ","21":" ","22":" ","23":" ","31":" ","32":" ","33":" "}
p = {"Player1":"Player2","Player2":"Player1"}
row1 = " " + b["11"] + " | " + b["12"] + " | " + b["13"] +" "
del1 = "-----------"
row2 = " " + b["21"] + " | " + b["22"] + " | " + b["23"] +" "
del2 = "-----------"
row3 = " " + b["31"] + " | " + b["32"] + " | " + b["33"] +" "
def board():
# Show up the board
row1 = " " + b["11"] + " | " + b["12"] + " | " + b["13"] +" "
del1 = "-----------"
row2 = " " + b["21"] + " | " + b["22"] + " | " + b["23"] +" "
del2 = "-----------"
row3 = " " + b["31"] + " | " + b["32"] + " | " + b["33"] +" "
print(row1)
print(del1)
print(row2)
print(del2)
print(row3)
def clean_board(b):
# Clean up the board
for i in range(1,4):
for j in range(1,4):
cnt = str(i) + str(j)
b[cnt] = " "
return b
def sel_sign():
# Let the players choose their signs
sign1 = input("First player, please select your sign --> ")
if len(sign1) != 1:
print("Just one character")
sign1 = input("First player, please select your sign --> ")
sign2 = input("Second player want to use the character --> ").upper()
if len(sign2) != 1 or sign2.upper() == sign1.upper():
print("Just one character, and it must be different from that of the Player1")
sign2 = input("Second player, please select your sign --> ")
return sign1.upper(), sign2.upper()
def cur_ply(ply):
# Identify the current player
if ply == "":
ply = "Player1"
else:
ply = p[ply]
return ply
def cur_sign(sign1, sign2, cur_ply):
# Identify the current player's sign
if cur_ply == "Player1":
cur_sign = sign1
else:
cur_sign = sign2
return cur_sign
def player_choice_row():
# Let the player chooses the row where he wants to put his sign
val_err = 1
sel_row = 0
while val_err != 0 or sel_row not in [1,2,3]:
try:
sel_row = int(input("Please select the n° row where you want to add your sign (1-3)-->"))
val_err = 0
except ValueError:
val_err = 1
return sel_row
def player_choice_col():
# Let the player chooses the column where he wants to put his sign
val_err = 1
sel_col = 0
while val_err != 0 or sel_col not in [1,2,3]:
try:
sel_col = int(input("Please select the n° col where you want to add your sign (1-3)-->"))
val_err = 0
except ValueError:
val_err = 1
return sel_col
def chk_choice(sel_row, sel_col):
# Check if the row-col number is a valid choice
valid = False
chk = str(sel_row) + str(sel_col)
if b[chk] == " ":
valid = True
return valid
def design_b(sel_row, sel_col, sign_to_use):
# Insert the sign on the board
chk = str(sel_row) + str(sel_col)
b[chk] = sign_to_use
def chk_winner():
# Check if the player has won
winner = False
if (b["11"] == b["12"] == b["13"]) and b["11"] != " ":
winner = True
elif (b["21"] == b["22"] == b["23"]) and b["21"] != " ":
winner = True
elif (b["31"] == b["32"] == b["33"]) and b["31"] != " ":
winner = True
elif (b["11"] == b["21"] == b["31"]) and b["11"] != " ":
winner = True
elif (b["12"] == b["22"] == b["32"]) and b["12"] != " ":
winner = True
elif (b["13"] == b["23"] == b["33"]) and b["13"] != " ":
winner = True
elif (b["11"] == b["22"] == b["33"]) and b["11"] != " ":
winner = True
elif (b["13"] == b["22"] == b["31"]) and b["13"] != " ":
winner = True
return winner
def again():
# Ask to continue
vrb = ""
while vrb.upper() not in ["Y","N"]:
vrb = input("Do you want to keep playing (Y/N) ? ")
if vrb.upper() == "Y":
return True
else:
return False
def play():
# main code
ply = ""
to_continue = True
valid_choice = False
winner = False
cnt = 1
# Define the two signs to use
sign1, sign2 = sel_sign()
# Define the current player
player = cur_ply(ply)
while to_continue != False and winner != True and cnt != 10:
# Define the current sign based on the current player
sign_to_use = cur_sign(sign1,sign2,player)
while valid_choice != True:
# Ask what is the row num
nrow = player_choice_row()
# Ask what is the col num
ncol = player_choice_col()
# Check if it is correct
valid_choice = chk_choice(nrow, ncol)
# Fill the selected space
design_b(nrow, ncol, sign_to_use)
# Show the board
board()
# Clear valid choice
valid_choice = False
# Check if there is a winner
winner = chk_winner()
if winner == True:
pass
else:
# Counter
cnt = cnt + 1
if cnt == 10:
pass
else:
# Ask if they want to continue
to_continue = again()
# Define the next player
player = cur_ply(player)
return player, winner, cnt
def result():
# this is the commmand to use in order to play the tic tac toe game
clean_board(b)
board()
player, winner, cnt = play()
if winner == True:
print(f"Congratulations {player}, you are the winner")
elif winner == False and cnt == 10:
print("This is a tie")
else:
print(f"{player} quit the game")
result()