Thread obsoleto Python tris

bleach96

Utente Attivo
Autore del topic
30 Agosto 2010
356
0
Miglior risposta
0
ciao :emoji_smiley:
ho appena prodotto un mio gioco di tris in python :emoji_smiley:
vi lascio il codice ;)
potete modificarlo e ridistribuirlo quanto volete :emoji_smiley:
python 2.7 o inferiore:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

tris 0.2 (creato con l'aiuto di InfernoHacker) questa versione presenta dei miglioramenti nel codice
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

risistemato il codice
 
Ultima modifica:
Riferimento: Python tris

Ottimo lavoro ! Comunque molto bravo per aver postato i codici anche se il gioco è sempliciotto comunque ti volevo chiedere se potevi postare il download del tuo gioco e qualche screen anche grazie mille! :ok:
 
Riferimento: Python tris

Il Python è un linguaggio di scripting, quindi è interpretato. Non esiste un file .exe in Python. Cosa vuoi che ti passi @julio_97 ?
 
Riferimento: Python tris

@julio_97
il gioco è da shell, quindi niente parte grafica xD se vuoi posso postare una screen, ma vedresti semplicemente la shell con ad esempio:
x|0|x
y|0|0
y|0|0
 
Riferimento: Python tris

ciao :emoji_smiley:
ho appena prodotto un mio gioco di tris in python :emoji_smiley:
vi lascio il codice ;)
potete modificarlo e ridistribuirlo quanto volete :emoji_smiley:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

download tris.py-->
Perfavore, Entra oppure Registrati per vedere i Link!

virus total--> in arrivo non riesco a farlo esaminare... rimane bloccato in: current status analysing download progress 0 bytes

Premetto che non ho MAI programmato in Python e non ho la più pallida idea di come si faccia.

Appena l'ho aperto, mi è spuntato fuori un errore di sintassi sulla riga

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Come ho già detto, non m'intendo di Python e non conosco la sintassi corretta.

Ti spiacerebbe dirmi cosa dovrei correggere per poter avviare il gioco ?

PS : Riesci anche a fare "giocatore vs computer" ? Io l'ho fatto in Visual Basic e gli algoritmi per la creazione di un computer che non perde mai, sono tutt'altro che difficili.
 
Riferimento: Python tris

O_o a me non esce nessun errore...

sul fatto di computer vs giocatore non ho ancora tentato a programmarlo...

mi puoi postare l'errore che ti da?
ad esempio TypeError o AttributeError.


se hai Linux apri la shell e scrivi python e dimmi che versione ti esce scritta, io ho la 2.7, potrebbe essere che la tua versione non è compatibile con i comandi usati da me (non lo so, sto ipotizzando)

Qualcun'altro ha avuto questo problema?
 
Ultima modifica:
Riferimento: Python tris

O_o a me non esce nessun errore...

sul fatto di computer vs giocatore non ho ancora tentato a programmarlo...

mi puoi postare l'errore che ti da?
ad esempio TypeError o AttributeError.

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

@bleach96

EDIT : Ho la 3.2 ed utilizzo Win7 64 Bit


Ho risolto, anche se continua a darmi altri errori.

Ma penso di aver capito il motivo :

Devi inserire tutta la linea fra parentesi, in questo modo :

print ( "blablabla", variabile, variabile2 )
 
Ultima modifica:
Riferimento: Python tris

strano O_o
guida ufficiale->
Perfavore, Entra oppure Registrati per vedere i Link!

non c'è nessuna parentesi, magari è stata introdotta nella versione 3.2

ecco, appunto:
Il seguente esempio di programma Python (versione 3.0) stampa il testo "Hello, world!":
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Il seguente è lo stesso programma funzionante con la versione 2.7 o precedenti:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
fonte->
Perfavore, Entra oppure Registrati per vedere i Link!

ho appena scoperto che nella 2.7 si può scrivere sia
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
sia
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!



P.S. se riesci a risolvere i problemi nella versione 3.2 puoi postare qui il source che lo metto nel post iniziale (ovviamente dandoti i meriti)
 
Ultima modifica:
Riferimento: Python tris

strano O_o
guida ufficiale->
Perfavore, Entra oppure Registrati per vedere i Link!

non c'è nessuna parentesi, magari è stata introdotta nella versione 3.2

ecco, appunto:
Il seguente esempio di programma Python (versione 3.0) stampa il testo "Hello, world!":
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Il seguente è lo stesso programma funzionante con la versione 2.7 o precedenti:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
fonte->
Perfavore, Entra oppure Registrati per vedere i Link!



P.S. se riesci a risolvere i problemi nella versione 3.2 puoi postare qui il source che lo metto nel post iniziale (ovviamente dandoti i meriti)

Ecco, infatti ho dovuto correggere tutto xD

Prima o poi riuscirò a giocarci ahah



EDIT : Ho corretto il codice per la versione 3 di Python.

Oltre a quella modifica, ho dovuto anche modificare "raw_input()" in "str(input()), poiché non funzionava.

Non so come, ma mi è venuto di scriverlo e funziona.

Mi sa che ora, quando avrò voglia, mi dedicherò anche un po' al Python eheh

Comunque sia, anche se non ci capisco, c'è qualche bug.. [ almeno, così sembra.. ]

Per esempio :

Se tu scegli la posizione B2 con il giocatore 1 e poi la scegli con il giocatore 2, non ti verrà detto che la posizione è occupata, ma avverrà una sostituzione.
Cosa che non avviene se il primo ad utilizzare quella posizione, è il giocatore 2.

Inoltre, se il giocatore 1 prende come posizione "A1" ed il giocatore 2 volesse prendere la posizione "B2", anche se libera, verrebbe informato che la posizione è occupata.

@bleach96
 
Ultima modifica:
Riferimento: Python tris

@InfernoHacker
strano O_o infatti ad ogni selezione della posizione c'è:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
che appunto evita di selezionare una casella già occupata


edit:
cavolo è vero O_o
però succede solo con b2 O_o


RISOLTO bug sulla sostituzione delle caselle...
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Python 2: print "The answer is", 42
Python 3: print("The answer is", 42)

La funzione raw_input() di py2 è stata rinominata input() in py3.

Python 2: the_input = raw_input() # the_input is of type string
Python 3: the_input = input() # the_input is of type string

vedendo su internet le differenze da python 2.* a python 3.* ho provato a modificarlo per adattarlo al 3.*
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
ovviamente avendo python 2.7 non l'ho testato
 
Ultima modifica:
Riferimento: Python tris

@InfernoHacker
strano O_o infatti ad ogni selezione della posizione c'è:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
che appunto evita di selezionare una casella già occupata


edit:
cavolo è vero O_o
però succede solo con b2 O_o


RISOLTO bug sulla sostituzione delle caselle...
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Python 2: print "The answer is", 42
Python 3: print("The answer is", 42)

La funzione raw_input() di py2 è stata rinominata input() in py3.

Python 2: the_input = raw_input() # the_input is of type string
Python 3: the_input = input() # the_input is of type string

vedendo su internet le differenze da python 2.* a python 3.* ho provato a modificarlo per adattarlo al 3.*
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
ovviamente avendo python 2.7 non l'ho testato

Corretto
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Errato
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


Comunque sia, adesso c'è un problema su C3.

Se tu fai [ in ordine di mosse ]

1G => A1
2G => C3
1G => C3

Il giocatore 1 prenderà la posizione C3 !

Ah, io lo farei più "pulito" come grafica.

Voglio dire, è difficile capire quando uno vince in un "tris" del genere : 000000000

Se, invece, tu facessi :


000
000
000


Sarebbe molto più semplice da capire =D

PS : Nel tic tac toe si usano X e O, non X e Y ! eheh
 
Riferimento: Python tris

Corretto
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Errato
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Grazie ;D
Comunque sia, adesso c'è un problema su C3.

Se tu fai [ in ordine di mosse ]

1G => A1
2G => C3
1G => C3

Il giocatore 1 prenderà la posizione C3 !
strano O_o

edit:
corretto xD avevo scritto
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
corretto:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Ah, io lo farei più "pulito" come grafica.

Voglio dire, è difficile capire quando uno vince in un "tris" del genere : 000000000

Se, invece, tu facessi :


000
000
000


Sarebbe molto più semplice da capire =D
a me esce

000
000
000

infatti ho messo i \n per andare a capo O_o, comunque poi sistemo xD
potrei mettere invece di un unico print, potrei fare
print e qui metto la riga A
print e qui metto la riga B
print e qui metto la riga C
PS : Nel tic tac toe si usano X e O, non X e Y ! eheh
lo so xD ma avevo già cominciato metendo come valore nullo(vuoto) O xD magari più avanti lo modificherò sotto questo aspetto xD



Risistemato il codice, c'erano dei print inutili O_o
 
Ultima modifica:
Riferimento: Python tris

Grazie ;D

strano O_o

edit:
corretto xD avevo scritto
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
corretto:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

a me esce

000
000
000

infatti ho messo i \n per andare a capo O_o, comunque poi sistemo xD
potrei mettere invece di un unico print, potrei fare
print e qui metto la riga A
print e qui metto la riga B
print e qui metto la riga C

lo so xD ma avevo già cominciato metendo come valore nullo(vuoto) O xD magari più avanti lo modificherò sotto questo aspetto xD



Risistemato il codice, c'erano dei print inutili O_o

@bleach96

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Qui la funzione per andare a capo [ \n ] non la vedo, ed io ho modificato semplicemente le parentesi !

Dovrebbe venire così :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


Comunque sia ricordati che la concatenazione delle stringhe deve essere fatta con " + ", a meno che non si tratti di una variabile di tipo INTEGER, in tal caso ti darebbe errore [ almeno, nel 3 è così ! ].

Esempio :
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Diventa :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

EDIT :
Per verificare l'input, invece di fare :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

potresti fare in questo modo :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

In questo modo la stringa in input verrà "trasformata" tutta in minuscolo e non dovrai eseguire il doppio dei controlli !

Un'altra cosa :

Appena finisce la partita, invece di chiudere il programma, potresti chiedere in input "Vuoi ricominciare ? S/N" e chiudere il programma in caso di risposta negativa !

Per fare il controllo delle vittorie, ritengo inutile fare :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Un metodo molto più veloce è quello di assegnare una variabile INTEGER per ogni riga orizzontale, verticale e diagonale e darle il valore "0" di default.

Quindi :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Se, per esempio, il giocatore 1 sceglie la posizione A1, tu andrai a modificare le variabili "v1, h1 e d1" ed assegnerai a tali variabili un valore di +1, quindi :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Se, invece, sarà il giocatore 2 a scegliere tale posizione, dovrai assegnare un valore di -1 :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Per effettuare il controllo, ti basterà fare :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Per "bloccare" una postazione, potresti utilizzare anche le variabili di tipo BOOLEAN, che si creano semplicemente assegnando il valore "True" o "False" [ mi raccomando, è case sensitive ].

Ci "lavoro" da ieri e già mi piace questo python eheh
 
Ultima modifica:
Riferimento: Python tris

@bleach96

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Qui la funzione per andare a capo [ \n ] non la vedo, ed io ho modificato semplicemente le parentesi !

Dovrebbe venire così :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


Comunque sia ricordati che la concatenazione delle stringhe deve essere fatta con " + ", a meno che non si tratti di una variabile di tipo INTEGER, in tal caso ti darebbe errore [ almeno, nel 3 è così ! ].

Esempio :
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Diventa :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
in python 2.7 invece si fa
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
EDIT :
Per verificare l'input, invece di fare :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

potresti fare in questo modo :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

In questo modo la stringa in input verrà "trasformata" tutta in minuscolo e non dovrai eseguire il doppio dei controlli !

Un'altra cosa :

Appena finisce la partita, invece di chiudere il programma, potresti chiedere in input "Vuoi ricominciare ? S/N" e chiudere il programma in caso di risposta negativa !

Per fare il controllo delle vittorie, ritengo inutile fare :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Un metodo molto più veloce è quello di assegnare una variabile INTEGER per ogni riga orizzontale, verticale e diagonale e darle il valore "0" di default.

Quindi :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Se, per esempio, il giocatore 1 sceglie la posizione A1, tu andrai a modificare le variabili "v1, h1 e d1" ed assegnerai a tali variabili un valore di +1, quindi :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Se, invece, sarà il giocatore 2 a scegliere tale posizione, dovrai assegnare un valore di -1 :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Per effettuare il controllo, ti basterà fare :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Per "bloccare" una postazione, potresti utilizzare anche le variabili di tipo BOOLEAN, che si creano semplicemente assegnando il valore "True" o "False" [ mi raccomando, è case sensitive ].

Ci "lavoro" da ieri e già mi piace questo python eheh

wow, sei sorprendente O_o io mi scrivo 5000 righe e te riesci a fare le stesse cose in 3/4 righe xD

comunque ci sono i \n
print ("riga A %s|%s|%s\nriga B %s|%s|%s\nriga C %s|%s|%s",x1,x2,x3,x4,x5,x6,x7,x8,x9)
e in python 2.7 funziona, comunque per fare il codice più pulito ho fatto così
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
penso sia più pulita la visualizzazione del codice


non ho capito quello di v,h,d
 
Ultima modifica:
Riferimento: Python tris

in python 2.7 invece si fa
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


wow, sei sorprendente O_o io mi scrivo 5000 righe e te riesci a fare le stesse cose in 3/4 righe xD

comunque ci sono i \n
print ("riga A %s|%s|%s\nriga B %s|%s|%s\nriga C %s|%s|%s",x1,x2,x3,x4,x5,x6,x7,x8,x9)
e in python 2.7 funziona, comunque per fare il codice più pulito ho fatto così
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
penso sia più pulita la visualizzazione del codice


non ho capito quello di v,h,d


Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Se qualcuno sceglie la postazione A1, tu devi fare :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Nel controllo

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


PS : L'ho cominciato ieri Python
 
Ultima modifica:
Riferimento: Python tris

E cosa ne pensi di Python e che guida usi. Grazie e Auguri
 
Riferimento: Python tris

E cosa ne pensi di Python e che guida usi. Grazie e Auguri

Non uso nessuna guida, studio le source, poiché la logica è sempre la stessa, cambia solo un po' la sintassi, ma s'impara in fretta se hai già avuto a che fare con altri linguaggi!
Tuttavia, quello che non capisco, lo cerco su internet.

Comunque sia puoi usare questa :
Perfavore, Entra oppure Registrati per vedere i Link!
 
Riferimento: Python tris

@InfernoHacker
per il fatto di trasformare tutto in minuscolo ho fatto
select=str(select.lower(raw_input("scegliere la posizione, a1,a2,a3,b1,b2,b3,c1,c2,c3")))

ma mi da errore
dice che la variabile locale lower non è definita, ma lower è una funzione, non una variabile
 
Riferimento: Python tris

@InfernoHacker
per il fatto di trasformare tutto in minuscolo ho fatto
select=str(select.lower(raw_input("scegliere la posizione, a1,a2,a3,b1,b2,b3,c1,c2,c3")))

ma mi da errore
dice che la variabile locale lower non è definita, ma lower è una funzione, non una variabile

Non so come funziona nel 2.7, ma potresti fare :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!