Punto netto (gioco collettivo community)

Appunti, guide, consigli, presentazioni e anteprime di giochi e applicativi in sviluppo per console open e non solo
Post Reply
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Punto netto (gioco collettivo community)

Post by Zip »

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

Code: Select all

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
Attachments
PuntoNetto_0_0_0_3.zip
(16.01 KiB) Downloaded 542 times
PuntoNetto_0_0_0_2.zip
(6.69 KiB) Downloaded 547 times
PuntoNetto.zip
(15.01 KiB) Downloaded 530 times
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: Punto netto (gioco collettivo community)

Post by Zip »

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

Code: Select all

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:

Code: Select all


//========================== 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
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: Punto netto (gioco collettivo community)

Post by gigios »

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.
Image
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: Punto netto (gioco collettivo community)

Post by Zip »

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

Code: Select all

///___________________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
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: Punto netto (gioco collettivo community)

Post by gigios »

From Bennu Wiki wrote: 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.
Image
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: Punto netto (gioco collettivo community)

Post by Zip »

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

Code: Select all

//========================== 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?
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: Punto netto (gioco collettivo community)

Post by Zip »

risolto:

Code: Select all

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..
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: Punto netto (gioco collettivo community)

Post by gigios »

Potresti anche semplificare l'IF utilizzando ELSE

Code: Select all

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 ;)
Image
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: Punto netto (gioco collettivo community)

Post by Zip »

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 :?
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: Punto netto (gioco collettivo community)

Post by gigios »

Fai questa prova.

Prima dell'istruzione Set_Mode aggiungi le due seguenti istruzioni:

Code: Select all

	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).
Last edited by gigios on 1 Sep 2011, 19:01, edited 1 time in total.
Image
Post Reply