Utilizamos Cookies de terceros para generar estadísticas de audiencia y mostrar publicidad personalizada analizando tu navegación. Si sigues navegando estarás aceptando su uso. Más información X
PortadaForo AyudaTutoriales
InicioForosForo Programación

Construir el juego de Buscaminas con el Python

Giukitt
2010-10-31 16:54 - Respuestas: 1 - Tema nº: 2730078


.

Necesito hacer el juego BUSCAMINAS con el pythonG;

El juego consiste en despejar todas las casillas de una pantalla que no oculten una mina.
Algunas casillas tienen un numero, este numero indica las minas que suman todas las casillas circundantes.
Asi, si una casilla tiene el numero 3, significa que de las ocho casillas que hay alrededor (si no es en una
esquina o borde) hay 3 con minas y 5 sin minas.
Partes del Programa
El juego se inicia con un menu.
LA PRIMER OPCION DEL MENU es solicitar el nombre del jugador, se busca en el archivo records.txt y
si no existe se lo agrega y se vuelve al menu.
LA SEGUNDA OPCION DEL MENU es jugar.
1) En una matriz de 8x8, el programa debe ubicar de manera aleatoria 10 minas
2) Presentar al usuario del programa, en la ventana grafica, una matriz de 8x8 vacia
3) El usuario selecciona, con el mouse, una posicion de dicha matriz
4) Si en dicha posicion hay una mina implica que pierde el juego, y el programa muestra la posicion de
todas las minas.
5) Si selecciona la ultima posicion posible sin minas, implica que gana el juego
6) Si en dicha posicion no hay una mina, el programa debe mostrar (en la ventana grafica) alrededor de
la posicion seleccionada, cuantas minas hay, lo cual le dara informacion al usuario para que pueda deducir
donde puede seleccionar una nueva posicion
7) Volver a (3)
Cuando el juego termina se muestra la posicion en el record, se graba el record y aceptando para volver
al menu.
LA TERCER OPCION DEL MENU es salir del juego, donde se termina la ejecucion del programa.

Si alguien me puede ayudar lo mas proonto posiblee!!.. Gracias.

Posibles soluciones:
Construir el juego de buscaminas con el pythonConstruir el juego de buscaminas con el python
Buscaminas descargarBuscaminas descargar
Python en blenderPython en blender
Manual para pythonManual para python
Ayuda con estos programas de pythonAyuda con estos programas de python
luciano12

Re: Construir el juego de Buscaminas con el Python - 2011-07-23 17:38 - Respuesta 2

yo te tengo la solucion!!!
# este programa esta bajo la licencia publica general.
# creador: gonzalez luciano
# buscaminas.py
# buscaminas v0.5
# copyleft 2008-2010 qcho
#
# este programa es software libre: usted puede redistribuirlo y/o modificarlo conforme a los terminos de la licencia publica general de gnu publicada
# por la fundacion para el software libre, ya sea la version 3 de esta licencia o (a su eleccion) cualquier version posterior.
# este programa se distribuye con el deseo de que le resulte util, pero sin garantias de ningun tipo; ni siquiera con las garantias implicitas de
# comerciabilidad o aptitud para un proposito determinado. para mas informacion, consulte la licencia publica general de gnu.
# junto con este programa, se deberia incluir una copia de la licencia publica general de gnu.
# de no ser asi, ingrese en .
#
from tkinter import *
import tkmessagebox
import random
from os import uname as os
# funcion playsnd: reproduce un determinado sonido de tipo wav (file) reconociendo en que plataforma esta trabajando (funciona en windows y linux).
def playsnd(file):
try:
if os()[0]=='windows':
from winsound import playsound, snd_async
playsound(file, snd_async)
elif os()[0]=='linux':
from wave import open as waveopen
from ossaudiodev import open as ossopen
s = waveopen(file,'rb')
(nc,sw,fr,nf,comptype, compname) = s.getparams( )
dsp = ossopen('/dev/dsp','w')
try:
from ossaudiodev import afmt_s16_ne
except importerror:
if byteorder == "little":
afmt_s16_ne = ossaudiodev.afmt_s16_le
else:
afmt_s16_ne = ossaudiodev.afmt_s16_be
dsp.setparameters(afmt_s16_ne, nc, fr)
data = s.readframes(nf)
s.close()
dsp.write(data)
dsp.close()
except:
print " (error: no se pudo reproducir el sonido)"
# funcion obtenerrecords: devuelve un arreglo de los puntajes almacenados en el texto plano determinado.
def obtenerrecords():
recaux={}
keys=[]
values=[]
rs=open("bmimgs/records","r")
for linea in rs.readlines():
if linea"":
x=linea.split("\t")
keys.append(float(x[1]))
values.append(x[0])
rs.close()
recaux=recaux.fromkeys(keys)
cont=0
for key in keys:
recaux[key]=values[cont]
cont+=1
keys.sort()
keys.reverse()
records=""
for key in keys:
records+=recaux[key]+"\t"+`key`+"\n"
return records[:-1]
# funcion grabarrecord: rebibe un nombre y una puntuacion (score) para registrarlos en el texto plano determinado.
def grabarrecord(nombre,score):
z=obtenerrecords()
rx=open("bmimgs/records","w")
rx.write(z+"\n"+nombre+"\t"+`score`)
rx.close()
# clase buscaminasgui: recibe una ventana de tipo tkinter (vent), y todos los datos adicionales para crear un campo (mediante__init__).
class buscaminasgui:
def __init__(self,vent,nom,alto,ancho,numminas):
# definicion de imagenes a ser usadas en el juego.
imgcarabien = photoimage(file="bmimgs/carabien.gif")
imgcaramal = photoimage(file="bmimgs/carafea.gif")
imgcaraseria = photoimage(file="bmimgs/caraseria.gif")
imgmina = photoimage(file="bmimgs/mina.gif")
imgboom = photoimage(file="bmimgs/boom.gif")
imgbloq = photoimage(file="bmimgs/bloq.gif")
# definicion de las 3 etiquetas informativas (bloqueos, estado y tiempo).
lblestado=label(image=imgcaraseria, relief=ridge, borderwidth=3)
lblbloqueos=label(font=("courier",12), relief=ridge, borderwidth=3)
lbltiempo=label(text="0",font=("courier",12), relief=ridge, borderwidth=3)
# ubicacion de las 3 etiquetas informativas (bloqueos, estado y tiempo) en la grilla.
lblbloqueos.grid(row=0,column=0,columnspan=int(ancho/3))
lblestado.grid(row=0,column=0,columnspan=(ancho))
lbltiempo.grid(row=0,column=((2*ancho/3)+1),columnspan=(ancho/3))
self.casillas = []
self.numcasillas=alto*ancho
# funcion setcampo: inicializa el campo cuando se crea o resetea.
def setcampo():
self.termino=0
contar()
self.restantes = self.numcasillas-numminas
lblestado["image"]=imgcaraseria
self.nbloq=numminas
lblbloqueos["text"]=`self.nbloq`
lbltiempo["text"]=`0`
for elemento in self.casillas:
elemento.destroy()
del self.casillas
self.casillas=[]
self.minas=random.sample(range(self.numcasillas),numminas)
for i in range(self.numcasillas):
casilla = label(vent, text=" ", font=("courier",10,"bold"), relief=ridge, borderwidth=1)
self.casillas.append(casilla)
def click (event, self=self, i=i):
marcar(i)
casilla.bind('',click)
def clickder (event, self=self, i=i):
bloquear(i)
casilla.bind('',clickder)
r=int(i/ancho)+1
casilla.grid(row=r,column=i%ancho)
# funcion contorno: devuelve el arreglo con las casillas alrededor a una casilla z.
def contorno(z):
con=[z-1-ancho,z-ancho,z+1-ancho,z-1,z+1,z-1+ancho,z+ancho,z+1+ancho]
for item in range(8):
aux=con[item]
if not 012:
min+=20
max+=70
if ancho >15:
min+=25
max+=30
alto=inputval("ingrese el alto del campo (en cuadros): ",int(min/ancho),int(max/ancho))
c=pow((ancho*alto),0.5)
b=inputval("ingrese el # de minas que desea buscar: ",int(pow(c,0.9)),int(pow(c,1.5)))
buscaminas(nombre,alto,ancho,b)
# empieza la ejecucion del juego:
print ("\nbuscaminas v 0.5\ncopyleft 2008-2010 qcho\n\teste programa se proporciona sin garantias de ningun tipo.\n\teste programa es software libre y usted puede redistribuirlo\n\t conforme a ciertas condiciones.\n\n")
jugar()
Página:1

Respuestas relacionadas:

Iniciar programas programados en pythonIniciar programas programados en pythonForo
Problema con ejercicio de programacion pythonProblema con ejercicio de programacion pythonForo
Construir un pcConstruir un pcForo
Construir una redConstruir una redForo
Construir gps con portatilConstruir gps con portatilForo
Construir cable de red...Construir cable de red...Foro
Como construir un boletin?Como construir un boletin?Foro
No puedo construir una red localNo puedo construir una red localForo
Ayuda construir foroAyuda construir foroForo
Construir gps en mi computadora portatilConstruir gps en mi computadora portatilForo
InicioSecciones
^ SubirAviso legal
Política Privacidad
Configurarequipos22 Diciembre 2024