PDA

Visualizza la versione completa : allegro.h \\creazione di piu nemici!


alex91xx
26-01-2009, 18:06
Salve a tutti,sono nuovo del forum,volevo chiedervi se sapete come inserire piu nemici in questo semplice videogioco da me creato...io ne ho inserito uno solo,ma nn ho capito se per aggiungerne altri bisogna creare altri listati.Un altra cosa poi,come faccio a cambiare dimensione del carattere quando rappresento i punti e le vite.grazie infinite a chi mi risponderà!javascript:void(0);
Ecco il listato:

/*INDICATORI DI PUNTI E VITA...PARTE 13*/

#include "allegro.h"

BITMAP *buf,*sprite,*sfondo,*scrolling,*cattivo,*playeres plode,*miss;
PALETTE colori;

int x,y,moltiplica,xscroll,xcattivo,ycattivo,xconto,yc onto,morto,tempesplgioc,fuoco,xmiss,ymiss,mortocat tivo,tempesplcattivo,contapunti,vite; /*aggiungo le variabili contapunti e vite*/
char score[160];

void doppiobuffering()
{
vsync();
blit(buf,screen,0,0,0,0,1024,768);
clear(buf);
}

void player(){
if(morto==1){
draw_sprite(buf,sprite,x,y);
}
}

void movimentotasti(){
if(morto==1){
if(key[KEY_LEFT])x=x-10;if(x<=0)x=0;
if(key[KEY_RIGHT])x=x+10;if(x>=1024)x=1024;
if(key[KEY_UP])y=y-10;if(y<=0)y=0;
if(key[KEY_DOWN])y=y+10;if(y>=768)y=768;
if (key[KEY_SPACE]) fuoco=1;
}
}

void fondale(){

xscroll=xscroll+8;;
blit(scrolling,buf,xscroll,0,0,0,1024,768);
if(xscroll>1024){
xscroll=0;
}
}

void nemico(){
if(mortocattivo==1){ /*determina la presneza o meno del nemico*/


draw_sprite(buf,cattivo,xcattivo,ycattivo);
}
}

void movimentonemico(){
if(mortocattivo==1){

if(yconto==1){
ycattivo=ycattivo-8;
if(ycattivo<=10){
yconto=2;
}
}
if(yconto==2){
ycattivo=ycattivo+8;
if(ycattivo>=700){
yconto=3;
}
}
if(yconto==3){
xcattivo=xcattivo-8;
xconto=xconto+8;
if(xconto>=40){
xconto=0;yconto=1;
}
}
if(xcattivo<=-50){
xcattivo=800;
ycattivo=400;
yconto=3;
}
}
}

void collisione() {

if(((x+200)>=xcattivo)&&(x<=(xcattivo+122))){
if(((y+68)>=ycattivo)&&(y<=(ycattivo+68))){
morto=0;
}
}
}

void esplgioc(){
if(morto==0){
if(tempesplgioc<=50){ /*l'esplosione viene visualizzata per 200cicli*/
tempesplgioc=tempesplgioc++;
draw_sprite(buf,playeresplode,x,y);
}
else{
x=10; y=30;
morto=1;
tempesplgioc=0;
vite--; /*solo quando il giocatore viene distrutto si riduce la vita di una*/
}
}
}

void missile(){
if(fuoco==0){ /*se la variabile fuoco è uguale a 0..*/
xmiss=x+200;ymiss=y+20; /*25 coincide cn il punto di partenza del giocatore e 15 la posizione del cannone di fuoco*/
}

if(fuoco==1){
draw_sprite(buf,miss,xmiss,ymiss); /*visualizza lo sprite del missile in punto determinato del monitor*/
xmiss=xmiss+8; /*fa avanzare il proiettile lungo l'asse x*/
if(xmiss>=1024)fuoco=0; /*se il proitettile supera il limite massimo dello schermo"1024" il proiettile scompare*/
}
}

void cattivocolpito(){ /*indica che il nemico è stato colpito*/
if(((xmiss+122)>=xcattivo)&&(xmiss<=(xcattivo+122))){ /*determina lo spazio di collissione sull'asse x del nemico e del proiettile*/
if(((ymiss+68)>=ycattivo)&&(ymiss<=(ycattivo+68))){ /*"""""""""""""""""""""""""""""""""""""""""""" y""""""""""""""""""""""""""""*/
mortocattivo=0; /*se la collissione è avvenuta il nemico muore*/
xcattivo=800;ycattivo=400;
fuoco=0;
}
}
}

void esplcattivo(){ /*creo la procedura per l'esplosione del nemico*/
if(mortocattivo==0){ /*se il nemico viene colpito la variabile mortocattivo diventa 0 e cosi si attiva l'esplosione*/
if(tempesplcattivo<=100){ /*controlla se tempesplcattivo è uguale a 200*/
tempesplcattivo++; /*il temporizzatore viene incrementato di una unità*/
draw_sprite(buf,playeresplode,xcattivo,ycattivo);
}
else{
xcattivo=800; ycattivo=400;
tempesplcattivo=0;
mortocattivo=1;
contapunti++; /*solo quando il nemico viene distrutto la variabile punti si incrementa di uno*/
}
}
}

void puntivite(){ /*procedura per visualizzare i punti e le vite del giocatore*/
sprintf(score, "PUNTI:%ld VITE: %ld", (long)contapunti,(long)vite); /*con sprintf dà il valore a score e vite per essere visualizzate*/
textout(buf,font,score,10,10,215); /*con textout visualizzamo una stringa di testo in modalita grafica*/
}

int main()
{

allegro_init();
install_keyboard();

set_color_depth(32);
set_palette(colori);

set_gfx_mode(GFX_DIRECTX_SOFT,1024,768,0,0);
buf=create_bitmap(1024,768);
clear(buf);

sprite=load_bmp("player.bmp",colori);
sfondo=load_bmp("fondale.bmp",colori);
cattivo=load_bmp("nemico.bmp",colori);
playeresplode=load_bmp("esplosione.bmp",colori);
miss=load_bmp("missile.bmp",colori);
scrolling=create_bitmap(2048,768);
clear(scrolling);
for(moltiplica=0;moltiplica<=2048;moltiplica=moltiplica+1024){
blit(sfondo,scrolling,0,0,moltiplica,0,1024,768);
}

tempesplgioc=0;
tempesplcattivo=0;
morto=1;
x=30;y=60;
xcattivo=800;ycattivo=400;
yconto=1;xconto=0;
fuoco=0; /*setto a 0 il valore fuoco*/
xmiss=0; ymiss=0; /*coordinate iniziali del missile*/
mortocattivo=1; /*determina la presenza del nemico*/
contapunti=0; /*assegno a 0 il valore dei contapunti x inziare*/
vite=3; /*dò 3vite al giocatore*/


while(!key[KEY_ESC]){
doppiobuffering();
fondale();
player();
movimentotasti();
nemico();
movimentonemico();
collisione();
esplgioc();
missile();
cattivocolpito();
esplcattivo();
puntivite();
}

destroy_bitmap(buf);
destroy_bitmap(sprite);
destroy_bitmap(sfondo);
destroy_bitmap(cattivo);
destroy_bitmap(scrolling);
destroy_bitmap(playeresplode);
}

END_OF_MAIN();



:) :) :)

alex91xx
26-01-2009, 23:19
volevo specificare..non è stato creato da me..mi son spiegato male..ma ho preso spunta da una guida! cmq grazie a tt quelli che mi risponderanno...

Pacio88
27-01-2009, 00:54
1)Se posso permettermi la prima cosa che dovresti fare prima di postare è leggerti il regolamento, perchè per come hai presentato la tua richiesta di aiuto non credo che saranno in molto quelli disponibili a leggere tutto quel codice.:D

2)Leggi la mia firma!Non credo si possa programmare un gioco semplicemente seguendo un tutorial, ma ci vogliono anni ed anni di studio ed esperienza.:D

3)Qual'è il tuo livello di programmazione?

alex91xx
27-01-2009, 13:21
Sinceramente mi posso definire un programmatore novello... :D sono alle prime armi. Sto realizzando un progetto con la scuola...il prof mi ha fornito una guida e ho cercato di prendere spuntoo da lì cambiando qualcosina...e quindi mi stavo chiedendo se era possibile inserire piu nemici. Tutto quà... :zizi:

Pacio88
27-01-2009, 14:08
Dal tuo anno deduco che tu sia ancora alle superiori e non mi spiego come sia possibile che il tuo professore ti abbia dato un esercizio simile.. da quanti anni è che studiate il C++?Che scuola fai?

Comunque se sei un programmatore alle prime armi prima di avventurarti in simili progetti ti conviene rinforzare le tue basi, programmare un gioco non è alla portata di tutti, anzi di pochi.

alex91xx
27-01-2009, 14:19
sono al 4 anno dell'industriale e con tutta sincerità il c++ dovremo iniziarlo a breve...ho una distinta conoscenza del c e cosi mi sono cimentato nel provare a programmare quel semplice videogioco per curiosità. :)

Pacio88
27-01-2009, 14:25
Originariamente inviato da alex91xx
sono al 4 anno dell'industriale e con tutta sincerità il c++ dovremo iniziarlo a breve...ho una distinta conoscenza del c e cosi mi sono cimentato nel provare a programmare quel semplice videogioco per curiosità. :)

Ecco, tutto si spiega :D

Ti faccio presente che sono al secondo anno di ing. informatica e un gioco non sono in grado di svilupparlo nemmeno io, quindi se ti piace programmare ti consiglio di comprarti un buon libro e partire dalle basi...
la strada è lunga...

alex91xx
27-01-2009, 14:30
Ti faccio presente che sono al secondo anno di ing. informatica e un gioco non sono in grado di svilupparlo nemmeno io, quindi se ti piace programmare ti consiglio di comprarti un buon libro e partire dalle basi...
la strada è lunga... [/QUOTE]


Immagino...infatti l'altro giorno chiesi a un mio cugino che fa anche lui il 3 anno di ing. informatica e neanche lui era in grado di svilupparlo.. :D bè io ci ho provato... :malol: :malol:

cigiri18
27-01-2009, 16:33
Originariamente inviato da Pacio88
Ecco, tutto si spiega :D

Ti faccio presente che sono al secondo anno di ing. informatica e un gioco non sono in grado di svilupparlo nemmeno io, quindi se ti piace programmare ti consiglio di comprarti un buon libro e partire dalle basi...
la strada è lunga...
che c'è di strano? all'università fate tutto tranne che imparare a fare giochi ^^

se vuoi imparare a fare un gioco ti conviene studiare per conto tuo, scegli un linguaggio di programmazione e studia su quello, se il gioco che vuoi creare è qualcosa di non particolarmente complesso puoi riuscirci con qualche mese di studio, nulla di particolare.
considera questo, io ho creato il gioco del monopoli in un paio di settimane e funziona più che bene.

tutto quello che tutti continuano a ripetere, e cioè che bisogna studiare anni un linguaggio diventa vero nel momento in cui si necessita di strutture particolari, oppure si ha il bisogno di un fottio di caricamenti, come purtroppo spesso capita, e quindi bisogna essere in grado di ridurre il carico di lavoro del processore o la quantità di dati in ram.

per il resto programmare un gioco in 2d è una puttanata, si tratta di un continuo controllo e smistamento, nulla di impossibile ^^

ovvio, se sai programmare decentemente alla fine potrai anche permetterti di ricontrollare il codice, altrimenti sarà un qualcosa di indecente. :D

se ti interessa posso passarti il giochino del monopoli, sono 2000e rotte righe, non particolarmente commentato, però abbastanza intuitivo.

Pacio88
27-01-2009, 16:53
Originariamente inviato da cigiri18
che c'è di strano? all'università fate tutto tranne che imparare a fare giochi ^^

se vuoi imparare a fare un gioco ti conviene studiare per conto tuo, scegli un linguaggio di programmazione e studia su quello, se il gioco che vuoi creare è qualcosa di non particolarmente complesso puoi riuscirci con qualche mese di studio, nulla di particolare.
considera questo, io ho creato il gioco del monopoli in un paio di settimane e funziona più che bene.

tutto quello che tutti continuano a ripetere, e cioè che bisogna studiare anni un linguaggio diventa vero nel momento in cui si necessita di strutture particolari, oppure si ha il bisogno di un fottio di caricamenti, come purtroppo spesso capita, e quindi bisogna essere in grado di ridurre il carico di lavoro del processore o la quantità di dati in ram.

per il resto programmare un gioco in 2d è una puttanata, si tratta di un continuo controllo e smistamento, nulla di impossibile ^^

ovvio, se sai programmare decentemente alla fine potrai anche permetterti di ricontrollare il codice, altrimenti sarà un qualcosa di indecente. :D

se ti interessa posso passarti il giochino del monopoli, sono 2000e rotte righe, non particolarmente commentato, però abbastanza intuitivo.

Sono d'accordo che all'università non si studia come programmare un gioco e a volte per come e cosa ti insegnano ti fanno solo perder tempo. Tra l'altro mi sembra anche giusto non studiare come programmare un gioco, in quanto se ti insegnano come programmare è come se lo facessero, no?. Ma se per caso però vuoi fare il programatore nella vita e provi a scrivere su google: cerco lavoro programmatore ti usciranno molte richieste ma in genere vorranno vedere quantomeno laurea o attestati vari. Di sicuro non gli puoi spiegare che ti sei letto tutti i libri sul C++ che vendono su amazon per giustificare un curriculum povero.

Per quanto riguarda lo sviluppo di un gioco "cavolata" sono d'accordo che bastano poche nozioni ma credo che già programmarlo in 2D complica le cose. Anche perchè fino a prova contraria per sviluppare un applicazione con interfaccia 2D significa:
- conoscere BENE il C++, il quale un po' di tempo ci vuole...
- studiarsi le API di windows o qualche libreria grafica (QT, wxwidgets...), il quale un po' di tempo ci cuole...
Se chiunque riesce a fare tutto questo in 4 settimane mi levo tanto di cappello..

Un altra cosa che mi ha sempre fatto pensare che sviluppare un gioco non sia così semplice è quanto duravano i titoli di coda di giochi come Final Fantasy.. i nomi dei membri del team saranno stati centinai; so che tu non ti riferivi a questi progetti, ma credimi che il 99% di coloro che si avvicinano alla programmazione intenzionati a sviluppare un gioco non ambiscono a fare il prato fiorito ma giochi di ben più fattura.

P.S. E comunque alex91xx no ha mai visto il C++ e come pretendi che possa semplicemente con un codice di 2000 righi impararci qualcosa.. è già tanto se da solo(senza libri) può capire il famoso "hello world".

Non me ne volere alex91xx ma sostengo fortemente che non si impara a programmare in una domenica pomeriggio che piove..

Loading