Juego Cartas en Fenix y alguna preguntilla

Started by lukas182, December 26, 2007, 05:43:03 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

lukas182

Hola!, sigo sin poder postear en los foros de Divsite, cree otra cuenta y me sigue dando error en el login.. incluso haciendo copy/paste del correo q se manda al buzon, ya se que soy algo tonto pero tanto como pa confundirme en un copy/paste creo q es demasiado xD!.

Ya termine el juego de cartas, que presente en el foro de divsite, se trataba de un juego de Tute, se puede mejorar, aun asi creo q kedo bastante bien. Aki dejo la direccion para el ke lo kiera probar:

http://rapidshare.com/files/79213692/Pctute2007.rar.html

Si alguno kiere y puede postearlo en el foro divsite en el post "Pc tute para Fenix" en el apartado Proyectos, se agradeceria :) .

Las otras preguntas son sobre programacion en fenix tb:

1)Quiero crear un array que guarde los identicadores de ua serie de procesos que creo de la manera:
[code language="bennu"]
jugadores[10];
for(i=0;i<11;i++)
     id_jugador=jugador(paramentros);
     jugadores=id_jugador;
end
[/code]
Suponemos que el proceso jugador es:
[code language="bennu"]
process jugador(parametros)

private

int numero;
String nombre;
int edad;

... //Resto del proceso
[/code]
Bien el problema reside, en que si yo kiero acceder a uno de esos id de los procesos,accedere a su correspodiente posicion del array, lo que pasa que solo me permite modificar los atributos x e y del proceso correspondiente, e intentado poner public las variables del proceso jugador y me sigue dando error, como debo acceder a esas variables?

[code language="bennu"]
//Acceder al jugador 3
write(0,200,200,0,jugadores[3].nombre); <- esto daria error
write_int(0,200,200,0,&jugadores[3].x); <-seria correcto
[/code]

Solo eso de momento, sorry por tener q postear aki sobre preguntas de Fenix , pero es que no puedo acceder al otro foro.

Saludos!

SplinterGU

Que error exacto te da el otro foro?
De donde sos y que proveedor de internet tenes?
Fuiste baneado alguna vez en el foro de divsite con algun otro nick?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

lukas182

#2
Oh! Ahora lo probe para decirte el error exacto del foro y se conecto correctamente... Supongo que algo tocarias.. xq llevaba mas de 1 mes se poder hacer login alli xD. Solo he usado el nick lukas182, nunka fui baneado tampoko.

Cambiando de tema, sabes como solucionar lo del array de ids? , o si acaso, ya lo posteare mañana en el divsite, gracias :) .

SplinterGU

Exactamente toque... nada... es mas, ni entre al foro desde que te puse la pregunta... seguro algo mal estabas haciendo o tenes el cache del explorador activado...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

lukas182

MmmM, bastante extraño ya que no kambie nada de la configuracion del explorador xD.

Lo del nombre.. aun declarandolo como "public" en el proceso sigue dando error.

[code language="bennu"]
program test;


Global
jugadores[10];
id_jugador;
i;

Begin

    set_mode(640,480,16);
   
    for(i=0;i<11;i++)
        id_jugador=jugador();
        jugadores=id_jugador;
    end

    write(0,200,200,0,jugadores[2].nombre); <---- Error

    repeat
       Frame;
    end
end
process jugador()

public

nombre;

Begin

    nombre= " Pedro ";

end

[/code]

Drumpi

Eso se debe a que se deben declarar la public antes que el proceso (externo) que las llama. Seguramente hayas escrito el proceso jugadores después de las llamadas... como el caso que indicas en tu ejemplo. Hay dos soluciones:
-Escribir el proceso jugadores antes del begin del main (o de cualquier proceso que quiera acceder)
-Como no siempre es posible conseguir un orden correcto, lo mejor es declarar las cabeceras de los procesos previamente. Si mi memoria no me falla sería algo así (según tu ejemplo)

[code language="bennu"]
program test;


Global
jugadores[10];
id_jugador;
i;

//****Zona de declaraciones de procesos
declare jugador()

public
string nombre;
end
//****fin declaracion de proceso jugadores

Begin

    set_mode(640,480,16);
   
    for(i=0;i<11;i++)
        id_jugador=jugador();
        jugadores=id_jugador;
    end

    write(0,200,200,0,jugadores[2].nombre); <---- Error?

    repeat
       Frame;
    end
end

process jugador()
Begin
    nombre= " Pedro ";
end

[/code]

Esto debería bastar, los declare son tan nuevos que apenas los he usado aun ^^U
PD: no te olvides los tipos de datos, sólo los INT vienen predefinidos, las strings no.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

GINO

hacen falta dos end:

[code language="bennu"]declare jugador()
   public
      string nombre;
   end
end[/code]
YUUAAA KAA

lukas182

Ops! no sabia que existia el declare xD. Aun asi.. sigue dando error -.- .

Drumpi

Normal, se me ha pasado por alto un error gordo: si usas repeat, no puedes finalizarlo con END, tienes que usar UNTIL (condicion). Para un bucle infinito se usa:
loop
//codigo
end
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

lukas182

Se! eso era un error bastante gordo xD.. aun asi ni me lo reporto el compilador.. ya que donde inicialmente da error es en el acceso a esa variable.. Dejemoslo.. no kiero ser pesado, de verdad.. xD( si no lo fui ya lo suficiente ). Uso Fenix 0.92a.

Saludos :)

SplinterGU

Lo mas simple es poner el codigo completo... seguro estas haciendo algo mal...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

lukas182

El codigo es este :

[code language="bennu"]
program test;
 
 
Global
jugadores[10];
id_jugador;
i;
 
//****Zona de declaraciones de procesos
declare jugador()
 
public
string nombre;
end
end
//****fin declaracion de proceso jugadores
 
Begin
 
    set_mode(640,480,16);
 
    for(i=0;i<11;i++)
        id_jugador=jugador();
        jugadores=id_jugador;
    end
 
    write(0,200,200,0,jugadores[2].nombre);// <---- Error?
 
    repeat
       Frame;
    until(key(_esc));
end
 
process jugador()
Begin
    nombre= " Pedro ";
end

[/code]

HaCkZJuaNN

claro. La variable jugadores tienes que declararla como tipo jugador.

sustituye la linea donde declaras jugadores:

jugadores[10];

por esto:

jugador jugadores[10];

así podrás acceder a las variables públicas propias del proceso jugador

SplinterGU

otra cosa, si en jugador, no pones un loop con un frame, tampoco va a funcionar, ya que el proceso, comienza y termina...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2