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