PDA

View Full Version : [C++] cin in modalità grafica


M4R1|<
23-12-2007, 20:06
avrei un problema nelle creazione di un programma console in modalità grafica.

quando si inserisce la grafica funzioni come cin, cout, clrscr... cambiano, infatti cout<< si è sostituito al (esempio) outtextxy(10,10,s), e cin>> a ? ecco il mio problema, nn conosco il nome della funzione.
chi la conosce?

Grazie in anticipo


ps: ho provato a cercare in google ma nn ho trovato nulla, e nel mio libro nn c'è :cry:

M4R1|<
24-12-2007, 08:43
avrei un problema nelle creazione di un programma console in modalità grafica.

quando si inserisce la grafica funzioni come cin, cout, clrscr... cambiano, infatti cout<< si è sostituito al (esempio) outtextxy(10,10,s), e cin>> a ? ecco il mio problema, nn conosco il nome della funzione.
chi la conosce?

Grazie in anticipo


ps: ho provato a cercare in google ma nn ho trovato nulla, e nel mio libro nn c'è :cry:

proprio nessuno lo sa? :cry:

cionci
24-12-2007, 09:42
Usi Borland ? outtextxy è tipico della libreria BGI del Borland. Tra l'altro è un compilatore vetusto.

In ogni caso devi similare te l'inserimento dei caratteri.
Ad esempio:

char s[2];
s[1] = '\0';
int i = 0;

do
{
s[0] = getch();
outtextxy(100 + 10 * i, 50, s);
}
while(c != '\n');

Poi magari potresti anche tenere conto del backspace per cancellare il carattere precedente (incollando un rettangolo sopra la lettera per eliminarla) e creare una specie di cursore in grafica che identifica la posizione successiva per l'inserimento.

M4R1|<
24-12-2007, 13:34
Usi Borland ? outtextxy è tipico della libreria BGI del Borland. Tra l'altro è un compilatore vetusto.

In ogni caso devi similare te l'inserimento dei caratteri.
Ad esempio:

char s[2];
s[1] = '\0';
int i = 0;

do
{
s[0] = getch();
outtextxy(100 + 10 * i, 50, s);
}
while(c != '\n');

Poi magari potresti anche tenere conto del backspace per cancellare il carattere precedente (incollando un rettangolo sopra la lettera per eliminarla) e creare una specie di cursore in grafica che identifica la posizione successiva per l'inserimento.

Grazie :ave: :ave:

cmq si è bc.
invece per cancellare il carattere precedente nn ne ho bisogno, visto che diciamo che lo scopo è quello di realizzare il gioco dell'impiccato ;)

ti copio il sorgente, anche se cmq dovrebbe essere perfetto :)

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <graphics.h>
const int parole=92;

void delay(double sec){
clock_t t;
t=clock()+CLOCKS_PER_SEC*sec;

while (clock()<t);}

void main(){

int gdriver=DETECT,gmode;
initgraph (&gdriver,&gmode,"C:\\Bcpp\\BGI");

char parola [parole][30]={"bianco","rosso","verde","cronometro","radiante","radioattivita","nero","bianca","parsani","esoterico","esotico","mango","camino","comignolo","tavolo","misa","computer","ragnarock","valhalla","cumulonembi","calorifero","tavolozza","guanti","lapsus","lapis","cavolo","mela","armadillo","finestra","autobotte","autotrento","virgola","ventola","piastrella","cosmogonia","calcificazione","plexiglass","tendoni","vecchio","giovine","dattero","iguana","gargantuesco","pulsante","biro","farenight","kelvin","dinamometro","centrifuga","cose","caso","waterloo","indovino","incompleto","polimero","pentatonico","estrionico","sarmazia","impero","regione","continente","oceano","quarzo","kriptonite","vampiro","salamandra","draconide","triceratopo","wraith","lich","yugi-oh","arconte","segugio","coppia","sonata arcitca","drifter","killer","cangiante","abbeccedario","abazia","alchemico","australopiteco","dromedario","mazinga","suppaman","parmenideo","trascendentale","zuzzurellone","deep","underworld"};
char indovina[30];
char lettera,risposta;
int tentativi=6,i,indovinato=0,partite=0;

char out1[]={"hai ancora "},out2a[]={" tentativi"},out2b[]={" tentativo"};
char out3[]={"la parola da indovinare ti appare ora cosi'"},out4[]={"."};
char out5[]={"cerca di indovinare una lettera prima che arrivi la tua morte..."},out6[]={"lettera = "};
char out7[]={"+-------------------------------------------"},out8[]={"|"};
char out9[]={"| la parola e' "},out10[]={"| hai finito "},out11[]={" partite"},out12[]={"| Fine del Gioco"};
char out13[]={"Vuoi Giocare ancora? (s/n)"},s[1],s2[1];



do{
partite++;
tentativi=6;
cleardevice();
randomize();
i=random(parole+1);

for (int j=0; j<30 ; j++){
if (parola [i][j]!='\0'){
indovina[j]='_';}
else
indovina[j]='\0';}

while (tentativi > 0 && strcmp(parola[i],indovina)>=0 ){
cleardevice();

itoa(tentativi,s,10);

line(300,300,400,300);//base

line(350,300,350,150);//staffa

line(350,150,280,150);//staffa2

line(280,150,280,170);//corda

if(tentativi<=5)
circle(280,180,10); //testa

if(tentativi<=4)
line(280,190,280,240);//corpo

if(tentativi<=3){
line(280,200,295,210);//braccio dx
line(280,200,265,210);}//braccio sx

if(tentativi<=2){
line(280,240,295,250);//gamba dx
line(280,240,265,250);}//gamba sx

if(tentativi<=1){
line(295,210,300,200);//mano dx
line(265,210,260,200);}//mano sx


if(tentativi>1){
outtextxy(10,10,out1);
outtextxy(100,10,s);
outtextxy(110,10,out2b);}
else{
outtextxy(10,10,out1);
outtextxy(100,10,s);
outtextxy(110,10,out2a);}

outtextxy(10,30,out3);

delay(0.5);
outtextxy(10,40,out4);
delay(0.5);
outtextxy(15,40,out4);
delay(0.5);
outtextxy(20,40,out4);

outtextxy(10,50,indovina);

outtextxy(10,60,out5);
outtextxy(10,70,out6);

lettera=getch();

indovinato=0;

for (j=0 ; j<30 ; j++){
if (lettera==parola[i][j]){
indovina[j]=lettera;
indovinato=1;}}

if (indovinato==0)
tentativi--;}

if(tentativi<=0){
line(295,250,300,260);//piede dx
line(265,250,260,260);}//piede sx

itoa(partite,s2,10);

outtextxy(10,80,out7);
outtextxy(10,90,out8);
outtextxy(10,100,out9);
outtextxy(130,100,parola[i]);
outtextxy(10,110,out10);
outtextxy(130,110,s2);
outtextxy(140,110,out11);
outtextxy(10,120,out12);
outtextxy(10,130,out8);
outtextxy(10,140,out7);

outtextxy(10,150,out13);
risposta=getch();

}while (risposta=='s');
closegraph();}




ti rigrazio ancora, e Auguri di Buon Natale :) :)