turbo c++ Funktion falsch ?

ich hab ein einfaches Programm geschrieben ( soll der Grundstein eines Spiels werden )
in turbo c++ wegen graphics.h
Code:
#include <graphics.h>
#include <conio.h>
#include <process.h>
#include <iostream.h>

void main()
{
   int driver , mode, x, y, j;
   driver = DETECT;
   initgraph(&driver, &mode, "\\tc\\bgi");

   x=100;
   y=100;


  gotoxy(1,1);lineto(640,1); // darum gets mir hier.





   char keychar;
   int linecolor;
   do  // hauptverarbietungs schleife
   {


		keychar = getch();
		switch (keychar)
			{
				case '50': linecolor=2;
				case 72: y--; break;
				case 80:y++; break;
				case 75: x--; break;
				case 77: x++; break;




			 }; // ende case

			 if ( x == 0 || x == 640 || y == 0 || y == 640 )
			    {
			     closegraph();
			     cout << " sie haben des spielgelende verlassen " << endl;
			     getch();
			     exit(1);
			    } // ende begrenzung

	setcolor(linecolor);
	    circle(x, y, 5);

       } while(1);   // ende schleife
} // ende main
so es geht um des gotoxy() und des lineto().
ich will einen strich über die obere hälfte zeichen.
aber der Strich fängt erst nach dem halben Bildschirm an, was komisch is , weil da etwa 320,1 müsste.
 
Bist du sicher das der korrekte graphicmode mit initgraph() gewählt wurde? Du übergibst dort mit einer nicht initialisierten Variable den Mode. Wogegen du die Variable "Driver", die du nicht erkennbar benutzt, mit DETECT initialisierst. Initialisiere mal die Variable "mode" mit DETECT oder VGA (sofern du VGA nutzt) und wenn es noch nicht klappt lass dir mit getgraphmode() Anzeigen in welchem Modus er arbeitet.

Gruß Byteblaster
 
Hi.

So wie es in dem Buch stand sollte das schon richtig sein. Du siehst ja das die Variablen dort als Pointer übergeben werden - d.h. die Funktion kann die Werte der Variablen ändern. Wenn man als driver DETECT übergibt, dann ist der mode völlig uninteressant weil er gar nicht benutzt wird.

Allerdings mußt du nach der Autodetektion irgendwie schon schauen in welchen Modus gewechselt wurde. (getmaxx() und getmaxy())

Code:
int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)
{
printf("Graphic error: %s\n", grapherrormsg(errorcode));
printf("˜Press any key:");
getch();
exit(1);
}

setcolor(YELLOW);
rectangle(0,0,getmaxx(),getmaxy());

Gruß
 
Zurück