Punto netto (gioco collettivo community)

Appunti, guide, consigli, presentazioni e anteprime di giochi e applicativi in sviluppo per console open e non solo
Avatar utente
Zip
Site Admin
Messaggi: 3094
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Punto netto (gioco collettivo community)

Messaggioda Zip » 1 set 2011, 2:42

Titolo del gioco temporaneao...
inizio io senno qui le acque non si smuovono.. :P

Codice: Seleziona tutto

changelog:
0.0.0.3
-risolto come sviluppare: si sviluppa in verticale e per il port si fa la rotazione
-risolto scritte in alto
0.0.0.2
-risolto cursore mouse
-risolto lo start
0.0.0.1
strutturato:
inizio>menu(pseudo)>livello-> processi
Allegati
PuntoNetto_0_0_0_3.zip
(16.01 KiB) Scaricato 104 volte
PuntoNetto_0_0_0_2.zip
(6.69 KiB) Scaricato 95 volte
PuntoNetto.zip
(15.01 KiB) Scaricato 98 volte

Avatar utente
Zip
Site Admin
Messaggi: 3094
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Re: Punto netto (gioco collettivo community)

Messaggioda Zip » 1 set 2011, 16:44

sto cercando di fare un mirino, in modo che quando si sposta il cursore si vede il mirino..
questo è l'esempio preso dal wiki di bennu

Codice: Seleziona tutto

import "mod_map"
import "mod_mouse"
import "mod_wm"

Process Main()
Private
    int dmap;
    int rmap;
    int gmap;
    int bmap;
    int ymap;
    int cmap;
    int mmap;
    int wmap;
Begin

    // Create a dark graph
    dmap = new_map(100,100,8);
    map_clear(0,dmap,rgb(50,50,50));

    // Create a red graph
    rmap = new_map(100,100,8);
    map_clear(0,rmap,rgb(255,0,0));

    // Create a green graph
    gmap = new_map(100,100,8);
    map_clear(0,gmap,rgb(0,255,0));

    // Create a blue graph
    bmap = new_map(100,100,8);
    map_clear(0,bmap,rgb(0,0,255));

    // Create a yellow graph
    ymap = new_map(100,100,8);
    map_clear(0,ymap,rgb(255,255,0));

    // Create a cyan graph
    cmap = new_map(100,100,8);
    map_clear(0,cmap,rgb(0,255,255));

    // Create a magenta graph
    mmap = new_map(100,100,8);
    map_clear(0,mmap,rgb(255,0,255));

    // Create a white graph
    wmap = new_map(100,100,8);
    map_clear(0,wmap,rgb(255,255,255));

    Repeat
       if(mouse.left) // +Red
            if(mouse.right) // +Green
                if(mouse.middle) // +Blue
                    mouse.graph = wmap;
                else
                    mouse.graph = ymap;
                end
            else
                if(mouse.middle) // +Blue
                    mouse.graph = mmap;
                else
                    mouse.graph = rmap;
                end
            end
        elseif(mouse.right) // +Green
            if(mouse.middle) // +Blue
                mouse.graph = cmap;
            else
                mouse.graph = gmap;
            end
        elseif(mouse.middle) // +Blue
            mouse.graph = bmap;
        else // Dark
            mouse.graph = dmap;
        end
        frame;
    Until(exit_status)

End


e questo è quello che ho provato a fare:

Codice: Seleziona tutto


//========================== PuntoNetto ================//
//========================== CODE:}Zip{ =================//
//=========================== GFX:}Zip{ =================//
//=========================== v.0.0.0.2 =================//


global
int gfx;
int mirino;
begin
     set_mode(320,240,16);
    gfx=load_fpg("gfx.fpg");
     put_screen(gfx,1);
    write(0,0,10,0,"press s");
    menu();
  loop
     if(key(_ESC))
       break;
     end
    frame;
  end
  let_me_alone();
end
///____________________________Menu

process menu()
begin
 loop
  if(key(_S))
  livello1();
  end
  frame;
 end
end

///____________________________Livello1

process livello1()
begin
mirino=gfx;
mirino=3;
 nemico0(80,130);
 
 repeat
 mouse.graph=mirino;
 frame;
 until(exit_status)
 
 loop
   frame;
 end
end



///___________________nemico0
process nemico0(x,y)
private
   int i;
   int xini;
begin
    let_me_alone();
    graph=gfx;
   graph=2;
   xini=x;
   loop
      if(flags==0)
         if(x <= xini+50)
            x=x+2;
         else
            flags=1;
         end
      else
         if(x >= xini-50)
            x=x-2;
            else
            flags=0;
            end
      end
      i=i+1;
      frame;
   end
end

bene
il mirino non lo vedo T_T

Avatar utente
gigios
Newser OC.it
Newser OC.it
Messaggi: 851
Iscritto il: 4 mag 2011, 9:08
Console open: Wiz; Caanoo
Località: Lombardia

Re: Punto netto (gioco collettivo community)

Messaggioda gigios » 1 set 2011, 17:22

Ciao Zip, scusa la domanda ma.... Perché usi così spesso l'istruzione let_me_alone ?

Se non ricordo male questa istruzione serve per 'troncare' tutti i processi tranne quello che chiama l'istruzione stessa, di conseguenza ti farebbe morire il processo che gestisce la visualizzazione del mouse.

Parlo del processo nemico0 dove chiami l'istruzione subito all'inizio, questo interrompe il loop di visualizzazione del mouse presente nel processo Livello1.

Ciao.
Immagine

Avatar utente
Zip
Site Admin
Messaggi: 3094
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Re: Punto netto (gioco collettivo community)

Messaggioda Zip » 1 set 2011, 17:36

sbagli, let_me_alone dovrebbe lasciare solo 1"nemico0" e quindi non ci sono piu di 1 nemico, se levassi quel let me alone, ogni decimo di secondo che tieni premuto s per fare comparire il nemico ne compare 1, totale vedi una scia di nemici che si muovono come la coda di 1 serpente,
leva let me alone e vedi
edit: caz hai ragione :D
ma rimane il problema dei nemici multipli

ri-edit: RIsolto!
ho spostato il letmealone dentro il loop di nemico0, in questo modo non rompe le palle al mirino e non fa ripetere il nemico

Codice: Seleziona tutto

///___________________nemico0
process nemico0(x,y)
private
   int i;
   int xini;
begin
    graph=gfx;
   graph=2;
   xini=x;
   loop
      if(flags==0)
         if(x <= xini+50)
            x=x+2;
         else
            flags=1;
         end
      else
         if(x >= xini-50)
            x=x-2;
            else
            flags=0;
            end
      end
      i=i+1;
      frame;
         let_me_alone();
   end
end

Avatar utente
gigios
Newser OC.it
Newser OC.it
Messaggi: 851
Iscritto il: 4 mag 2011, 9:08
Console open: Wiz; Caanoo
Località: Lombardia

Re: Punto netto (gioco collettivo community)

Messaggioda gigios » 1 set 2011, 17:43

From Bennu Wiki ha scritto:INT let_me_alone ( )

Kills all processes except the calling one.


;)

Per il discorso del tasto S devi gestire nel processo menu il fatto che sino a quando S è premuto non puoi più generare altri nemici.
Dovrebbe bastare una variabile che va a 1 quando è premuto la prima volta il tasto e impedisce di premerlo nuovamente sino a quando torna a 0.
Immagine

Avatar utente
Zip
Site Admin
Messaggi: 3094
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Re: Punto netto (gioco collettivo community)

Messaggioda Zip » 1 set 2011, 17:47

mettendo il let_me_alone in "livello()"
ho la possibilita di tenere piu processi nemico0, il mirino, e premendo s non apre altri livello0..
pero lagga puo essere?
quindi meglio la tua soluzione

Codice: Seleziona tutto

//========================== PuntoNetto ================//
//========================== CODE:}Zip{ =================//
//=========================== GFX:}Zip{ =================//
//=========================== v.0.0.0.2 =================//


global
int gfx;
int mirino;
begin
     set_mode(320,240,16);
    gfx=load_fpg("gfx.fpg");
     put_screen(gfx,1);
    write(0,0,10,0,"press s");
    menu();
  loop
     if(key(_ESC))
       break;
     end
    frame;
  end
  let_me_alone();
end
///____________________________Menu

process menu()
begin
 loop
  if(key(_S))
  livello1();
  end
  frame;
 end
end

///____________________________Livello1

process livello1()
begin
let_me_alone();
mirino=gfx;
mirino=3;
 nemico0(80,90);
 nemico0(80,130);
 nemico0(80,160);
 
 repeat
 mouse.graph=mirino;
 frame;
 until(exit_status)
 
 loop
   frame;
 end
end



///___________________nemico0
process nemico0(x,y)
private
   int i;
   int xini;
begin
    graph=gfx;
   graph=2;
   xini=x;
   loop
      if(flags==0)
         if(x <= xini+50)
            x=x+2;
         else
            flags=1;
         end
      else
         if(x >= xini-50)
            x=x-2;
            else
            flags=0;
            end
      end
      i=i+1;
      frame;
   end
end

in pratica come il "premuto" di bombjhon? per dover far ripremere pe fare piu salti
mmm ricordi come si fa o vado a cercare in bombjhon?

Avatar utente
Zip
Site Admin
Messaggi: 3094
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Re: Punto netto (gioco collettivo community)

Messaggioda Zip » 1 set 2011, 17:58

risolto:

Codice: Seleziona tutto

process menu()
private
int premuto;
begin
 loop
  if(key(_S) && premuto==0);
  livello1();
  premuto=1;
  end
 
  if (!key(_S))
  premuto=0;
  end
 
  frame;
 end
end

ottimo :)
ragazzi, sapete se c'e qualche funzione per ruotare l'intero gioco?, c'e sempre il fatto delle scritte da risolvere..
ora impacchetto tutto e riposto quello che ho fatto fin'ora

Edit: nel primo post potete scaricacre quel poco che si è fatto finora..

Avatar utente
gigios
Newser OC.it
Newser OC.it
Messaggi: 851
Iscritto il: 4 mag 2011, 9:08
Console open: Wiz; Caanoo
Località: Lombardia

Re: Punto netto (gioco collettivo community)

Messaggioda gigios » 1 set 2011, 18:02

Potresti anche semplificare l'IF utilizzando ELSE

Codice: Seleziona tutto

if(key(_S))
  if(premuto==0)
    livello1();
    premuto=1;
  end
else
  premuto=0;
end


Il risultato è sicuramente lo stesso :-P

EDIT: Per la rotazione ho visto che c'è la variabile Angle ma mi sembra sia utilizzabile solo per gli elementi grafici. Per il testo non ho ancora cercato ;)
Immagine

Avatar utente
Zip
Site Admin
Messaggi: 3094
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Re: Punto netto (gioco collettivo community)

Messaggioda Zip » 1 set 2011, 18:07

si esatto grazie gigios, si vede che lo fai di mestiere, io sono un po grezzo XD
ragazzi qualcuno si propone per darmi una mano?
dovremmo fare una lista delle cose da fare in ordine

EDIT: si ma sicuramente non andra con Write o Write var..

farlo in orizzontale è una cattiva idea provate a tenere con 1 mano orizzontale la caanoo, verticale è perfetto..
vuol dire che faremo tutti i numeri e le lettere a mano :?

Avatar utente
gigios
Newser OC.it
Newser OC.it
Messaggi: 851
Iscritto il: 4 mag 2011, 9:08
Console open: Wiz; Caanoo
Località: Lombardia

Re: Punto netto (gioco collettivo community)

Messaggioda gigios » 1 set 2011, 18:16

Fai questa prova.

Prima dell'istruzione Set_Mode aggiungi le due seguenti istruzioni:

Codice: Seleziona tutto

   scale_resolution_orientation = 3;
   scale_resolution = 03200240;

salva e prova.

Praticamente vai a specificare la risoluzione x 0320 e y 0240

Ricapitolando, questo è quello che ho capito dalle due istruzioni (se non completano il wiki o aggiungono un manuale aggiornato è decisamente arduo risolvere problemi anche semplici).

scale_resolution_orientation definisce l'orientamente che deve assumere lo schermo:
0 = Nessuna rotazione (schermo normale)
1 = Rotazione a SX di 90 gradi
2 = Rotazione a SX di 180 gradi
3 = Rotazione a SX di 270 gradi
4 = Eccezione :lol:

scale_resolution definisce la risoluzione con cui tutti gli elementi grafici vanno scalati, credo che questa sia necessaria per scalare tutte le coordinate e gli oggetti grafici in automatico in base alla risoluzione che impostiamo (se esempio impoti 06400480 otterrai tutti gli elementi grafici raddoppiati come risoluzione).
La risoluzione deve essere nella forma: XXXXYYYY ovvero 4 caratteri numerici che rappresentano la coordinata X e 4 per la coordinata Y. Non ho provato a vedere se accetta anche delle variabili di tipo stringa o numerico, ma dubito.

Ovviamente con queste istruzione viene ruotata/scalata solo la visualizzazione ma le coordinate rimangono sempre le stesse, quindi vanno gestite normalmente ed è compito del programmatore posizionare in maniera corretta i vari oggetti (quindi non cambia nulla se non la complessità che quando si vuole spostare il personaggio a destra, in realtà dobbiamo spostarlo in alto).
Ultima modifica di gigios il 1 set 2011, 19:01, modificato 1 volta in totale.
Immagine


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite