18 octubre 2006

Estas lluvias

Que barbaro 4 dias lloviendo sin parar, y claro ya esto ha dejado estragos en mi persona con tremenda tos y combinado con gripe, en que momento me ha sucedido, justo cuando he terminado el programa de sumatic y ya estoy en la documentación del codigo fuente, ni modos esto tendra que esperar ya que estoy mas que mallugado por la gripe, pero bueno no todo es programar en la vida.

16 octubre 2006

Terminado! Sumatic

Ahora si doy por terminada la version 0.1 de mi juego Sumatic programado en lenguaje c# y usando gtk# y glade para la interfaz del juego y claro todo esto bajo mono, ahora que ya funciona estoy limpiando un poco el codigo y viendo donde se puede optimizar, pero aqui les dejo 2 pantallas de una jugada espectacular que hice de prueba, por cierto solucione lo del arrastre de los numeros desde las Labels, claro que tuve que usar un EventBox, me costo trabajo e incluso no estoy convencido como lo utilice, pero en fin funciona de esa manera, si lo modifico despues ya sacare la version modificada, entonces aqui deja las pantallas y esten pendientes a la publicacion del codigo completo, la verdad he aprendido mucho al realizar este juego, entre lo aprovechable se encuentra el como hacer un Drag and Drop, manejo de un Timer y un ProgressBar, utilizacion de EventBox y utilización de Sqlite basico para almacenar los records y entre otras cosas interesantes, bueno aqui le dejo las pantallas para no aburrir.

Pantallas


12 octubre 2006

Cerca del fin Sumatic

Ya ahorita esta en un 65% el juego de sumatic, solo resta el codigo de los records, que tengo pensado almacenarlos con Sqlite para ponerlo mas interesante, pero todavia tengo un pequeño problema, utilice unas labels para recibir los numeros arrastrados y ahora el detalle radica en como regreso estos numeros o los muevo de los labels, ya que intente aplicar los eventos de arrastre y nada que no funciona, espero que alguien me pueda iluminar, y si no pues por el momento lo sacare asi y ya en la version siguiente cambiare las labels por unos botones o unos pictures, en fin aqui dejo una pantalla del avance.

Pantalla sumatic

Hasta el proximo post....

10 octubre 2006

Correcciones y pantalla modificada

Bueno aqui un breve cambio en la pantalla de sumatic y por lo que veo yo creo que habra mas cambios, estoy encontrando problemas en el arrastre, pero bueno aqui dejo parte del codigo y la nueva pantalla de sumatic.




Codigo


// ------------------------------------------ //
// Proyecto: Juego de sumas
// Desarrollador: gsur
// Licencia: GPL
// Blog: http:gsur.blogspot.com
// Email: rafamp78(dot)gmail.com
// ------------------------------------------
// mcs -pkg:gtk-sharp-2.0 -pkg:glade-sharp-2.0 -resource:vsumatic.glade Sumatic-0.1.cs
// mono Sumatic-0.1.exe



using System;
using Gtk;
using Gdk;
using GtkSharp;
using Glade;
class Sumatic
{
[Glade.Widget] Gtk.Window window;
[Glade.Widget] Gtk.HBox boxBotones;
[Glade.Widget] Gtk.Table tabla;
[Glade.Widget] Gtk.Button btNuevo;
[Glade.Widget] Gtk.Button btN1;
[Glade.Widget] Gtk.Button btN2;
[Glade.Widget] Gtk.Button btN3;
[Glade.Widget] Gtk.Button btN4;
[Glade.Widget] Gtk.Button btN5;
[Glade.Widget] Gtk.Button btN6;
[Glade.Widget] Gtk.Button btN7;
[Glade.Widget] Gtk.Button btN8;
[Glade.Widget] Gtk.Button btN9;
[Glade.Widget] Gtk.Button btN10;
[Glade.Widget] Gtk.Label lblN1;
[Glade.Widget] Gtk.Label lblN2;
[Glade.Widget] Gtk.Label lblN3;
[Glade.Widget] Gtk.Label lblN4;
[Glade.Widget] Gtk.Label lblN5;
[Glade.Widget] Gtk.Label lblN6;
[Glade.Widget] Gtk.Label lblN7;
[Glade.Widget] Gtk.Label lblN8;
[Glade.Widget] Gtk.Label lblN9;
[Glade.Widget] Gtk.Label lblN10;
int Nfila1, Nfila2, Nresultado;
static void Main()
{
Application.Init();
new Sumatic();
Application.Run();
}
public Sumatic()
{
Glade.XML gxml = new Glade.XML("vsumatic.glade", "window", null);
gxml.Autoconnect(this);
window.ShowAll();
btNuevo.Clicked += Nuevo_Juego;
TargetEntry [] te = new TargetEntry [] { new TargetEntry ("STRING", 0, 1), };
foreach(Gtk.Widget b in boxBotones)
{
Gtk.Drag.SourceSet (b, Gdk.ModifierType.Button1Mask, te, Gdk.DragAction.Copy);
b.DragDataGet += OnBtNDragGet;
}
foreach(Gtk.Widget lbl in tabla)
{
Gtk.Drag.DestSet (lbl, DestDefaults.All, te, DragAction.Copy);
lbl.DragDataReceived += OnlblNDropDragDataRecieved;
}
iniciar();
}
public void on_window_delete_event(object obj, DeleteEventArgs args)
{
Application.Quit();
}
public void on_btsalir_clicked(object obj, EventArgs args)
{
Application.Quit();
}
private void Nuevo_Juego(object obj, EventArgs args)
{
Random r = new Random();
Nfila1 = r.Next(100,999);
Nfila2 = r.Next(100,999);
Nresultado = Nfila1 + Nfila2;
string numeros = Nresultado.ToString();
if(numeros.Length < 4)
numeros += "?";
numeros += Nfila1.ToString() + Nfila2.ToString();
int i=0;
foreach(Gtk.Button b in boxBotones)
{
b.Label = numeros[i].ToString();
i+=1;
}
}
private void OnBtNDragGet(object o, DragDataGetArgs args)
{
Gtk.Button boton = (Gtk.Button) o;
Atom [] targets = args.Context.Targets;
args.SelectionData.Set(targets [0], 8, System.Text.Encoding.UTF8.GetBytes(boton.Label));
}
private void OnlblNDropDragDataRecieved(object o, DragDataReceivedArgs args)
{
Gtk.Widget source = Gtk.Drag.GetSourceWidget(args.Context);
Gtk.Button boton = (Gtk.Button) source;
Gtk.Label Contenedor = (Gtk.Label) o;
string strB = boton.Data["disponible"].ToString();
string strL = Contenedor.Data["vacio"].ToString();
if((strB.Equals("si") == true) && (strL.Equals("si") == true))
{
string data = System.Text.Encoding.UTF8.GetString ( args.SelectionData.Data );
Contenedor.Markup = "< background="\" foreground="\" size="\"> " + data + " < / span >";
boton.Data["disponible"] = "no";
Contenedor.Data["vacio"]="no";
boton.Label = "-";
//boton.Hide();
}
}
private void iniciar()
{
foreach(Gtk.Widget b in boxBotones)
{
b.Data["disponible"] = "si";
}
foreach(Gtk.Widget lbl in tabla)
{
lbl.Data["vacio"] = "si";
}
}
}


Pantalla

Ya solo falta la parte logica del juego, claro que si alguien quisiera aportar alguna mejora con gusto sera recibida, pero ahora hasta aqui dejo esto, ya es tarde y quiero ver mi programa en la tele.

Primera pantalla

Aqui dejo la primer pantalla del Juego que comente comenzaria a pasar a Mono, por el momento el avance casi se reduce a esta pantalla, sin funciones todavia, bueno un poco ya de avance en el codigo de arrastre de los numeros pero falta todavia, pero les dejo la pantalla para que vayan conociendo el proyecto en cuestion.

09 octubre 2006

Juego Interesante

Bueno aqui de nuevo planteando otro proyecto a realizar, creo que ya van varios planteamientos que aun no han sido realizados o al menos expuestos, pero este sera algo especial, este no es un proyecto que partira desde cero, en realidad se trata de un pequeño juego que realice en visual basic y que buscando unos archivos en mis respaldos de archivos lo encontre, asi que me he planteado pasarlo ahora a Mono, en resumen es un juego de esos que te distraen en un rato de ocio y que en parte te hace ocupar un poco de masa encefalica.

El juego en cuestion trata sobre una serie de numeros que se han de acomodar en un tablero de tal forma que se realiza una suma, pero para que dar mas detalles, mejor cuando este listo vendra la pantalla y la explicación a detalle, y si se preguntan de que servira esto para el aprendizaje de Mono, pues lo que aqui se manejara sera el arrastre o Drag and Drop de objetos cosa que no hemos abordado en ninguna entrada anterior y claro no desmerecera el codigo de generación de numeros para el juego.

05 octubre 2006

Mejora en dbimage

Estaba pensando en agregarle alguna mejora al programa dbimage y nada mejor que incluir la opcion de guardar los datos cargados en el treeview, asi que he optado por guardar esa informacion en un archivo xml, por lo que ahora veremos un poco como se manipula un archivo xml con c# en Mono, ahora me pongo a trabajar en ello y espero tener algo en los siguientes dias

Referencias previas:

Pantalla de dbimage

Codigo de dbimage