elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Juego ejercicios [Python]
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 Ir Abajo Respuesta Imprimir
Autor Tema: Juego ejercicios [Python]  (Leído 110,476 veces)
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: Juego ejercicios [Python]
« Respuesta #120 en: 11 Enero 2010, 18:47 pm »

:xD Me pasa mas de lo que debería :xD


En línea

Masita

Desconectado Desconectado

Mensajes: 120


pythoneando


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #121 en: 11 Enero 2010, 20:13 pm »

Ya estoy de vuelta. Veo que la cosa ha avanzado bastante, esta misma noche me pongo con ello!!!


En línea

En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #122 en: 12 Enero 2010, 13:20 pm »

La verdad que el crear juegos no me gusta nada, pero bueno, para que haya otro ejercicio más rápido XD

Servidor:
Código
  1. import socket
  2. import random
  3. import time
  4. from time import localtime, strftime
  5.  
  6. class TresRaya():
  7.    def __init__(self):
  8.        self.player1 = ''
  9.        self.player2 = ''
  10.  
  11.    def Agregar(self,value, player):
  12.        try:
  13.            if(int(value) in range(1,10)):
  14.                if(value not in (self.player1+self.player2)):
  15.                    if(player==1):
  16.                        self.player1 += value
  17.                    else:
  18.                        self.player2 += value
  19.                    return 'True'
  20.                else:
  21.                    return 'El casillero ya se encuentra ocupado'
  22.            else:
  23.                return 'El casillero seleccionado no es válido'
  24.        except:
  25.                return 'El casillero seleccionado no es válido'
  26.  
  27.    def Dibujar(self):
  28.        total = self.player1+self.player2
  29.        t = '\n ___  ___  ___  \n'
  30.        tablero = ['' for x in range(12)]
  31.        for i in range(10):
  32.            if (str(i) in self.player1):
  33.                tablero[i-1] = '|_X_|'
  34.            elif (str(i) in self.player2):
  35.                tablero[i-1] = '|_0_|'
  36.            else:
  37.                tablero[i-1] = '|___|'
  38.        rd = t+''.join(tablero[6:9])+'\n'+''.join(tablero[3:6])+'\n'+''.join(tablero[0:3])+'\n'
  39.        return rd
  40.  
  41.    def VerificaGanador(self, player):
  42.        soluciones = ['123','456','789','147','258','369','159','357']
  43.        gana = ''
  44.        if(player==1):
  45.            gana = self.player1
  46.        else:
  47.            gana = self.player2
  48.  
  49.        for s in soluciones:
  50.            if((s[0] in gana) and (s[1] in gana) and (s[2] in gana)):
  51.                return 1
  52.        if(len(self.player1+self.player2) == 9):
  53.            return 0
  54.        return -1
  55.  
  56. Tr = TresRaya()
  57. s = socket.socket()
  58. s.bind(('localhost',19911))
  59. s.listen(2)
  60. socket_c1,addr1 = s.accept()
  61. print(time.strftime("%d/%m/%y %H:%M:%S:",time.localtime()),'Conexion desde',addr1)
  62. socket_c2,addr2 = s.accept()
  63. print(time.strftime("%d/%m/%y %H:%M:%S:",time.localtime()),'Conexion desde',addr2)
  64.  
  65. f = random.randrange(1,3)
  66. p = 1
  67.  
  68. if (f == 2):
  69.    p = 2
  70.  
  71. while(True):
  72.    if(p == 1):
  73.        socket_c1.send(Tr.Dibujar().encode()+'\n-- PLAYER ONE [X]--\n'.encode())
  74.        time.sleep(1)
  75.        socket_c1.send('Juega'.encode())
  76.        play = socket_c1.recv(100).decode()
  77.    else:
  78.        socket_c2.send(Tr.Dibujar().encode()+'\n-- PLAYER TWO [0]--\n'.encode())
  79.        time.sleep(1)
  80.        socket_c2.send('Juega'.encode())
  81.        play = socket_c2.recv(100).decode()
  82.  
  83.    if(play=='exit'):
  84.        if(p == 1):
  85.            socket_c2.send('Juego Terminado por el otro jugador'.encode())
  86.        else:
  87.            socket_c1.send('Juego Terminado por el otro jugador'.encode())
  88.        time.sleep(2)
  89.        socket_c2.close()
  90.        socket_c1.close()
  91.        break
  92.  
  93.    Agrego = Tr.Agregar(play,p)
  94.    if(Agrego == 'True'):
  95.        win = ''
  96.        whowin = Tr.VerificaGanador(p)
  97.        if(whowin == 1):
  98.            win = '\n\n\n-- Gana PLAYER' + str(p) + ' --'
  99.        elif(whowin == 0):
  100.            win = '\n\n\n-- EMPATE --'
  101.        if(whowin == 1 or whowin == 0):
  102.            socket_c1.send(win.encode())
  103.            time.sleep(2)
  104.            socket_c1.send('Juego Terminado'.encode())
  105.            socket_c2.send(win.encode())
  106.            time.sleep(2)
  107.            socket_c2.send('Juego Terminado'.encode())
  108.            time.sleep(2)
  109.            socket_c2.close()
  110.            socket_c1.close()
  111.            break
  112.        if(p == 1):
  113.            p = 2
  114.        else:
  115.            p = 1
  116.    else:
  117.        if(p == 1):
  118.            socket_c1.send(Agrego.encode())
  119.            time.sleep(1)
  120.        else:
  121.            socket_c2.send(Agrego.encode())
  122.            time.sleep(1)
  123.  
  124. print(time.strftime("%d/%m/%y %H:%M:%S:",time.localtime()), 'Juego Terminado')
  125. s.close()

Cliente:
Código
  1. import socket
  2.  
  3. s = socket.socket()
  4. s.connect(('localhost',19911))
  5.  
  6. while(True):
  7.    data = s.recv(100).decode()
  8.    if(data == 'Juego Terminado' or data == 'Juego Terminado por el otro jugador'):
  9.        break
  10.    elif(data == 'Juega'):
  11.        casillero = input('\nIngresa numero de casillero [1-9]: ')
  12.        s.send(casillero.encode())
  13.        if(casillero == 'exit'):
  14.            s.close()
  15.            break
  16.    elif(data != '' and data != 'Juega'):
  17.        print(data)

Seguro que no es para nada la mejor manera, pero quería terminarlo ya! XD
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #123 en: 12 Enero 2010, 13:23 pm »

Y así se ve en el servidor y uno de los clientes (con errores de ingreso) :P

Código:
D:\Py>python.exe Cliente3raya.py
 ___ ___ ___
|___||___||___|
|___||___||___|
|___||___||___|

-- PLAYER ONE [X]--

Ingresa numero de casillero [1-9]: 1
 ___ ___ ___
|___||___||___|
|___||___||___|
|_X_||___||_0_|

-- PLAYER ONE [X]--

Ingresa numero de casillero [1-9]: 5
 ___ ___ ___
|___||___||___|
|___||_X_||_0_|
|_X_||___||_0_|

-- PLAYER ONE [X]--

Ingresa numero de casillero [1-9]: o
El casillero seleccionado no es váli
 ___ ___ ___
|___||___||___|
|___||_X_||_0_|
|_X_||___||_0_|

-- PLAYER ONE [X]--

Ingresa numero de casillero [1-9]: 6
El casillero ya se encuentra ocupado
 ___ ___ ___
|___||___||___|
|___||_X_||_0_|
|_X_||___||_0_|

-- PLAYER ONE [X]--

Ingresa numero de casillero [1-9]: 9


-- Gana PLAYER1 --

D:\Py>

Código:
D:\Py>python.exe Servidor3raya.py
12/01/10 13:12:41: Conexion desde ('127.0.0.1', 1455)
12/01/10 13:13:39: Conexion desde ('127.0.0.1', 1456)
12/01/10 13:14:38: Juego Terminado

D:\Py>

Como puede verse, el tablero se actualiza solo cuando "te vuelve el foco", así que cuando envías la jugada debes de esperar a que te toque otra vez para que se actualice.
En realidad no se por que hice esto así, solo debeía de agregar otro llamado a TresRayas.dibujar() :xD

Supongo que con esto esta ok, así que voy pensando en un nuevo ejercicio :P

Saludos
« Última modificación: 12 Enero 2010, 15:17 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: Juego ejercicios [Python]
« Respuesta #124 en: 12 Enero 2010, 14:44 pm »

Vale, lo espero.
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #125 en: 12 Enero 2010, 15:45 pm »

El siguiente es sencillo :P

"Crear un programa que abra un archivo binario y 'extraíga' todo aquello que pueda significar texto"

El mejor ejemplo de esto es strings de Sysinternals (la salida no debe de ser tal cual ese programa, sino que tiene que ser dentro de todo, 'legible')

Saludos
« Última modificación: 13 Enero 2010, 20:06 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Masita

Desconectado Desconectado

Mensajes: 120


pythoneando


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #126 en: 14 Enero 2010, 02:03 am »

Supongo que lo que pides es eliminar los caracteres extraños.

Código
  1. def filtro(x):
  2. f = open(x)
  3. cadena = f.read()
  4. for i in range(len(cadena)):
  5. x = False
  6. for j in range(65,91):
  7. if cadena[i] == chr(j):
  8. x = True
  9. for j in range(97,123):
  10. if cadena[i] == chr(j):
  11. x = True
  12. for j in range(48,58):
  13. if cadena[i] == chr(j):
  14. x = True
  15. if x == False:
  16. cadena = cadena.replace(cadena[i]," ")
  17. return cadena
  18.  
  19. binario = raw_input("Ingrese el nombre del archivo: ")
  20. try:
  21. cadena = filtro(binario)
  22. cadena = cadena.split()
  23. cadena = "  ".join(cadena)
  24. print  cadena.upper()
  25. except:
  26. print "Archivo no encontrado"
  27.  

Supongo que es eso lo que pedias dejo mi ejercicio por si es aceptado (me voy ya a la cama...)

El siguiente ejercicio consiste en un programa que al ejecutarlo con este formato: Nombre_del_programa -Accion -Archivo. Ejemplo: python miprograma.py -B foto.jpg

-El programa tiene que permitir: Crear, Borrar, Abrir el archivo que le demos como segundo parametro.

Este tambien es sencillito.
En línea

En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #127 en: 14 Enero 2010, 02:13 am »

Si pero no, la idea es esa más o menos ...pero eso falla :silbar:
OPEN por defecto abre un archivo en modo texto, y estamos hablando de un binario, intenta por ejemplo abrir el notepad.exe con eso :silbar:

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Masita

Desconectado Desconectado

Mensajes: 120


pythoneando


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #128 en: 14 Enero 2010, 02:15 am »

Es que yo lo habia intentado con un gif y un archivo en c compilado, No tengo ningun archivo .exe a mano, uso linux y el wine no me funciona. :rolleyes:

Mañana me bajo cualquier .exe y lo intento!
« Última modificación: 14 Enero 2010, 02:18 am por Masita » En línea

En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #129 en: 14 Enero 2010, 02:18 am »

Igual deberías de haber tenido problemas con el GIF, te dejo trabajar bien? :huh:
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Reto/Juego Ejercicios en Python « 1 2 3 4 5 »
Ejercicios
Novlucker 47 35,547 Último mensaje 20 Diciembre 2010, 06:47 am
por [L]ord [R]NA
ejercicios en python
Scripting
ramontxu 2 3,683 Último mensaje 15 Diciembre 2011, 21:56 pm
por ramontxu
Ejercicios python con solucion
Programación General
bichotg 0 2,903 Último mensaje 17 Febrero 2012, 00:33 am
por bichotg
ejercicios con while y for en python
Scripting
jasson94 3 10,571 Último mensaje 26 Octubre 2012, 22:52 pm
por jasson94
Ayuda ejercicios de python
Scripting
jasson94 2 3,860 Último mensaje 30 Octubre 2012, 01:39 am
por jasson94
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines