PDA

View Full Version : c++ e grafica


manu@2986
19-11-2003, 15:16
Ciao a tutti.

Per esercitazione dovrei fare in c++ un progr che simuli il gioco della battaglia navale che permetta a due computer collegati tramite la seriale di comunicare le varie celle...ma questo non è il problema, ma quello di fare delle griglie "decenti", fare le griglie con i caratteri ascii non mi ispira molto...so che si può attivare la modalità grafica ma non so come fare sia ad attivarla che ad utilizzarla...potete aiutarmi?
grazie

alderighi
19-11-2003, 18:44
void main()
{
clrscr();
//Inizializzazione scheda grafica
int driver_grafico=VGA;
int modalita_grafica=VGAHI;
int errore; //Se si è verificato un errore nell'inizializzazione della
//grafica, ne segnala il tipo.

initgraph(&driver_grafico, &modalita_grafica, "C:\\BC5\\BGI\\");

errore = graphresult();

//Se si è verificato un errore lo stampa
if(errore) //ERRORE NELL'INIZIALIZZAZIONE DELLA SCHEDA VIDEO
{
cout<<"ERRORE: "<< grapherrormsg(errore)<<endl;
getch();
}
else //VISUALIZZAZIONE CORRETTA
{

Qui ci va tutto il programma cioè cio che mettresti nel main

}
closegraph();//Chiudo la grafica
}

manu@2986
19-11-2003, 18:48
grazie...ma ora che ho inizializzato la grafica come posso utilizzarla a dovere??cioè qualche semplice comando per poter disegnare linee o cambiare il colore allo sfondo e altre piccole cosette....scusa l'ignoranza:(

alderighi
19-11-2003, 18:49
Questa inizializzazione funziona solo su c/c++ della Borland, e in modalità MS-DOS.
Attenzione bisogna che innanzitutto includi la libreria graphics.h e devi creare un nuovo progetto, inoltre quando lo crei seleziona su piattaforma dos standard e accanto su librerie spunta la casella BGI.
L'inizializzazione che ti ho fatto vedere io a noi ce l'ha data il prof, inoltre si può modificare e portare fino a 1024*768.
Usa obliggatoriamente o l'outextxy o il cout e cin perchè il c non funzia.

manu@2986
19-11-2003, 18:51
ok io cout e cin son quelli che uso sempre...per il resto va tutto bene tranne la creazione del progetto ma mi arrangero...per il resto ti rimando alla domanda sopra...grazie

alderighi
19-11-2003, 18:54
Leggiti l'help che si chiama bcdos che contiene un sacco di istruzioni tipo, bar,bar3d,line,rectangle,floodfill,setcolor,setline,circle e sono presenti anche alcuni esempi.
Fai attenzione che il borland sia installato nell'unità c: altrimenti devi mettere un'altra lettera nell'intestazione dove si fa riferimento alle cartelle del Borland c/c++.

Non esitare a chiedere che ormai facendo la 4° Informatica ITI a Empoli e avendo il prof fissato sono diventato quasi esperto, cè anche chi è riuscito(un pazzo) a fare dei bottoni tridimensionali cliccabili attraverso il muose tramite la getkey o roba del genere.
Te sei uno studente di... ?

alderighi
19-11-2003, 18:56
per creare linee e roba varia devi leggerti l'help bcdos (fai un trova)
per esempio per mettere lo sfondo
floodfill
per creare una linea
line
e cosi via

manu@2986
19-11-2003, 20:16
anke io faccio quarta info xò a Biella e prima d'ora non ho mai provato a fare uso di grafica in c++...minkia dei tasti 3d cliccabili!!!!!!!!!!!!!!!!!!roba da pazzi altro che visual basic!!!credo che tu sia molto + bravo di me, complimenti!e poi figurati se la mia prof si mette a spiegare come si utilizza la grafica...hai già fatto i puntatori??e le classi??queste non ancora ma spero presto perchè credo che imparandole bene di possano fare dei passi avanti...cmq ora va tutto bene...l'unica cosa è il clrscr che se lo metto mi fa dei casini...grazie ciao

alderighi
20-11-2003, 14:08
le classi ancora le dobbiamo fare ma manca poco, abbiamo da poco finti i file e le funzione ricorsive, i puntatori e gia da molto (metà terza), stiamo vedendo ora l'allocazione dinamica.
Per quanto riguarda il clrscr(), usa prima il clrscr(); e poi subito dopo il cleardevice();
Questo perchè il clrscr porta la posizione di dove verranno scritte le cose in alto mentre il cleardevice pulisce lo schermo e lo rende tutto nero.

manu@2986
20-11-2003, 19:03
ok io invc le funzioni ricorsive e i file li ho fatti lo scorso anno invc ora faccio i puntatori e l'allocazione dinamica della memoria..anke per me per le classi manca poco...tra l'altro, oggi ho fatto le olimpiadi dell'informatica...non si poò dire che fossero cose semplici, nella tua scuola le fate?

ri
20-11-2003, 21:43
oh il borland.... anche io ai "bei" tempi dell'itis mi son trovato di fronte a professori idioti che mi han fatto perdere ore e ore sulle funzioni grafiche della graphics del Borland... mi ero fatto anche io una bella libreria per generare applicazioni windows style con tasti 3d cliccabili col mouse etc etc ^^'
e ora posso dire che è stato tutto COMPLETAMENTE inutile ^^
quindi... se vi ci divertite, fate pure, ma non perdeteci la testa ;)

verloc
21-11-2003, 08:07
scusate,
ma non è + semplice (oltre che + bello)usare le funzioni standard di windows
lineto ,rectangle etc etc disegnando sulla parte client della form (di dimensione fissa)direttamente?
Una casella fatta ad esempio 21 x 21 pixels ,con griglia di linee ortogonali fatte di 1 pixel.
Nell'evento onPaint si disegna (e ridisegna) tutto.
Esempio
Tabella di 10x10 caselle :

L=21*10+9*1 pixels +2 pixel dei bordi esterni

nave da 4:

lato piccolo 21+1+1
lato grande 21*4 +5*1

Spero di essere stato chiaro :)

cionci
21-11-2003, 08:56
Originariamente inviato da verloc
Spero di essere stato chiaro :)
Purtroppo se programmano con il Turbo C...
Inoltre un compialtore a 32 bit per Windows renderebbe più difficile la comunicazione sulla seriale... Non impossibile, ma certo + difficile...

verloc
21-11-2003, 10:14
Originariamente inviato da cionci
Purtroppo se programmano con il Turbo C...
...


:eek:
ma sono anni che borland ha rilasciato il 5.5! (free f.n.c)
(e ce stanno già dentro le api di win)
Ma sti "professori" dove vivono,sulla luna?


ciao cionci ;)

alderighi
21-11-2003, 14:01
in effetti mi chiedo anche io perchè non usare il visual c/c++ su interfaccia grafica e abbandonare i 16bit per i 32bit, però bisogna anche dire che per le basi del c è forse meglio programmare in c con interfaccia sotto dos, e poi altrimenti come fanno a complicarci la vita?

manu@2986
21-11-2003, 15:16
noi usiamo il c++ 3.1 della borland per fare il laboratorio di sistemi dove facciamo uso di interrupt...(anke col 5.02 si può)e invece nel lab di info usiamo il 5.02, credo che non si usa il 5.5 perchè la mia scuola avendo la licenza per il 5.02 perchè dovrebbe cambiarlo...poi bo non so...

alderighi
23-11-2003, 07:46
ma che licenze e licenze, non ho mai visto una scuola che abbia un programma con la licenza in regola, è solo perchè gli fa fatica cambiare sia al tecnico che ai professori.

manu@2986
23-11-2003, 15:07
si infatti il tecnico non è che sia una cima...cmq credo che la mia assistente si adatterebbe cmq...è una che ha dimostrato di sapere non come un altro mio assistente che non sa una mazza...cmq si sa il mondo è anche questo...