da Berga95 » ven apr 22, 2011 9:39 pm
Ah, nulla, un tic-tac-toe in Python multiplayer, per giocare da pc a pc (connessi ad internet)
L'ho abbozzato l'altro giorno...
Anche se mi sono reso conto che non chiudere la connessione correttamente costringe a riavviare il PC
Se vi interessa vedere i due sorgenti molto incasinati (un client e un server):
- Codice: Seleziona tutto
#servertris.py
#creato da Berga95
import socket
#cose utili
j = 0
k = 0
l = 0
xon = []
while k != 9:
xon = xon + ["_"]
k = k+1
k = 0
def griglia(k):
'''Stampa la griglia'''
for el in xon:
if k % 4 == 0:
print "\n"
k = k + 1
print "|" + el + "|",
k = k+1
def check(xon):
'''Controlla se il giocatore _lato_server_ ha vinto:
ritorna 1 in caso positivo.'''
if (#righe orizzontali
(xon[0] == xon[1] == xon[2] == symbol)|
(xon[3] == xon[4] == xon[5] == symbol)|
(xon[6] == xon[7] == xon[8] == symbol)|
#righe verticali
(xon[0] == xon[3] == xon[6] == symbol)|
(xon[1] == xon[4] == xon[7] == symbol)|
(xon[2] == xon[5] == xon[8] == symbol)|
#righe oblique
(xon[0] == xon[4] == xon[8] == symbol)|
(xon[2] == xon[4] == xon[6] == symbol)):
return 1
else:
return 0
MyName = raw_input("Ciao, posso sapere il tuo nome? ")
print("\nCiao " + MyName + ".\n")
print 'Sto aspettando che qualcuno si connetta sulla porta 1337...\n'
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mySocket.bind(( '', 1337 ))
mySocket.listen(1)
while 1:
channel, details = mySocket.accept()
print 'Mi sono connesso con ', details
new_game = raw_input("Cominciare nuova partita? (y/n) ")
if new_game != 'y':
mySocket.send(MyName + "ha rifiutato la sfida.")
mySocket.close()
print("Connessione chiusa con ", details)
break
else:
mySocket.send(MyName + "ha accettato la sfida.")
#inizia la sessione di gioco
while new_game == 'y':
symbol = raw_input("Scegli il tuo simbolo: ")
#inizia prima il server, poi client
sfida = 1
if j % 2 == 0:
while sfida != 0:
#print " _______"
griglia(k)
check(xon)
l = raw_input("Inserisci il numero della casella: ")
xon[int(l)-1] = symbol
if check(xon):
print("Hai vinto!")
mySocket.send("Loser")
sfida = 0
pappa = ''
for el in xon:
pappa = pappa + str(el)
mySocket.send(pappa)
griglia(k)
pappa = mySocket.recv(100)
xon = list(pappa)
if len(xon) == 5:
print "Sfigato -.-"
sfida= 0
- Codice: Seleziona tutto
#clienttris.py
#creato da Berga95
new_game = 'y'
#cose utili
j = 0
k = 0
l = 0
xon = []
while k != 9:
xon = xon + ["_"]
k = k+1
k = 0
def griglia(k):
'''Stampa la griglia'''
for el in xon:
if k % 4 == 0:
print "\n"
k = k + 1
print "|" + el + "|",
k = k+1
def check(xon):
'''Controlla se il giocatore _lato_server_ ha vinto:
ritorna 1 in caso positivo.'''
if (#righe orizzontali
(xon[0] == xon[1] == xon[2] == symbol)|
(xon[3] == xon[4] == xon[5] == symbol)|
(xon[6] == xon[7] == xon[8] == symbol)|
#righe verticali
(xon[0] == xon[3] == xon[6] == symbol)|
(xon[1] == xon[4] == xon[7] == symbol)|
(xon[2] == xon[5] == xon[8] == symbol)|
#righe oblique
(xon[0] == xon[4] == xon[8] == symbol)|
(xon[2] == xon[4] == xon[6] == symbol)):
return 1
else:
return 0
import socket
MyName = raw_input("Ciao, qual e' il tuo nome? ")
print("\nCiao " + MyName + ".\n")
mySocket = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
ip = raw_input("Inserisci l'IP del server: ")
mySocket.connect (( ip , 1337 ))
while 1:
#accettazione
q = mySocket.recv(100)
print q
#inizia la sessione di gioco
while "accettato" in q:
symbol = raw_input("Scegli il tuo simbolo: ")
#inizia prima il server, poi client
sfida = 1
if j % 2 == 0:
while sfida != 0:
#print " _______"
griglia(k)
check(xon)
pappa = mySocket.recv(100)
xon = list(pappa)
if len(xon) == 5:
griglia(k)
print "Sfigato -.-"
sfida = 0
griglia(k)
l = raw_input("Inserisci il numero della casella: ")
xon[int(l)-1] = symbol
if check(xon):
print("Hai vinto!")
mySocket.send("Loser")
sfida = 0
pappa = ''
for el in xon:
pappa = pappa + str(el)
mySocket.send(pappa)
In effetti devo ancora includere mySocket.close() ![Fragorosa risata [:D]](http://www.megalab.it/forum/images/smilies/fragorosa_risata.gif)
P.S: una variabile si chiama "pappa" perché in quel momento avevo una fame... ![Linguaccia! [bleh]](http://www.megalab.it/forum/images/smilies/bleh.gif)
P.P.S: Adesso, invece, sto porconando con i frattali... Vabbè che i numeri complessi e il piano di Gauss saranno argomenti da 4a - 5a superiore, però non capisco se le immagini che genero sono corrette
Beh, almeno quando spegnerò il PC mi dedicherò alla lettura de "Il codice Atlantide"
Mi aspetta il 6o capitolo
Non è morto ciò che in eterno può attendere - e col passare di strani eoni - anche la morte può morire.
~ H.P. Lovecraft