Grafik unter C ?!
-
Hallo alle zusammen!!
Ich hab folgendes Problem. Ich bin gerade dabei ein kleines Spiel für das Studium zu programmieren, ist soweit auch fertig und funktioniert, nur leider kann ich nicht zwischen Grafik- und Eingabefenster automatisch hin und her springen. Zudem soll das Grafikfenster die ganze Zeit geöffnet bleiben, dabei wird das fenster immer inaktiv und "schmiert mir ab".
Noch eine Frage wäre wie ich das Grafikfenster in der Größe und Position verändern kann, gibts da etwas, hab leider nichts finden können.mfg und schonmal im voraus VIELEN DANK
ANDI
-
Zuerst mal...was ist dein Grafikfenster?
Was verwendest du für Libs? WinAPI?und wieso hast du zwei fenster für die eingabe und für die ausgabe

-
*gg..das ist so eine Frage wie:
"Hilfe ich habe nen Programmier-Fehler im Spiel ? Was ist das ?"
-
Hallo, danke für die schnelle Antowrt, ich denke der komplette Quelltext hilft euch am ehesten weiter

#include <stdio.h> #include <conio.h> #include <graphics.h> int hoelzer, anz_computer, anz_spieler; //Globale Variablen void streichholz(int anzahl) { for(int i=0;i<anzahl;i++) { int j = i*20; int x1 = 30+j; // Streichholzkörperkoordinaten int y1 = 60; int x2 = 35+j; int y2 = 140; int cr = 6; // Kreisradius int cx = x1+(x2-x1)/2; // Kreis x Koordinate int cy = y1-cr; // Kreis y Koordinate setcolor(4); // Linienfarbe für Streichholzkopf setfillstyle(1 ,4); // Flächenfarbe für Streichholzkopf pieslice(cx ,cy ,0 ,0 ,cr); // Streichholzkopf setfillstyle(1 ,14); // Flächenfarbe für Streichholzkörper bar(x1, y1, x2, y2); // Streichholzkörper settextstyle(3 ,0 ,1); // Setzt Schriftart, -ausrichtung und -größe fest setcolor(15); // Setzt Textfarbe fest line(0 ,getmaxy()/2 ,getmaxx() ,getmaxy()/2); //Horizontal Aufteilung line(getmaxx()/2 ,getmaxy()/2 ,getmaxx()/2 ,getmaxy()); //Vertikal Aufteilung } } void ausgabe() { cleardevice(); setviewport(0, 0, getmaxx(), getmaxy()/2, false); //Obere Hälfte streichholz(hoelzer); //Startet Funktion streichholz outtextxy(10, 10, "Noch zu spielende Hölzer"); //Schreibt Text in Fenster setviewport(0, getmaxy()/2, getmaxx()/2, getmaxy(), false); //Unteres-Linkes Fenster streichholz(anz_computer); //Startet Funktion streichholz outtextxy(10, 10, "Hölzer von Computer"); //Schreibt Text in Fenster setviewport(getmaxx()/2, getmaxy()/2, getmaxx(), getmaxy(), false); //Unteres-Rechtes Fenster streichholz(anz_spieler); //Startet Funktion streichholz outtextxy(10, 10, "Hölzer von Spieler"); //Schreibt Text in Fenster delay(500); //Zeitverzögerung um 500ms } int spielerzug(int n, int k) { int anz; do { printf("Sie sind am Zug!\n"); printf("Wieviele Hoelzer wollen Sie nehmen?\n"); scanf("%d", &anz); } while(anz<1 || anz>k); anz_spieler+=anz; return n-anz; } int computerzug(int n, int k) { int anz; for(int i=1; i<=k; i++) { anz = (n-i) % (k+1); if(anz==1) { printf("Der Computer nimmt %d Hoelzer\n", i); anz_computer+=i; return n-i; } } } void result(int r) { cleardevice(); //Bildschirm löschen setviewport(0, 0, getmaxx(), getmaxy(), false); //Setzt Grafikfenster settextstyle(3 ,0 ,8); //Setzt Schriftart, -ausrichtung und -größe fest setcolor(4); //Setzt Textfarbe fest if (r==0) { outtextxy(170, (getmaxy()/2)-50, "WINNER"); //Gibt nach dem Spiel Winner aus } else { outtextxy(180, (getmaxy()/2)-50, "LOSER"); //Gibt nach dem Spiel Loser aus } } void main() { int k, r; int grt = DETECT, grm; printf("Mit wievielen Streichhoelzern wollen Sie spielen?\n "); scanf("%d", &hoelzer); printf("Wieviele Streichhoelzer duerfen in einem Zug genommen werden?\n "); scanf("%d", &k); initgraph(&grt, &grm, ""); // Grafik initialisieren delay(500); //Zeitverzögerung um 500ms ausgabe(); //Startet die Funktion ausgabe for (;hoelzer>=2;) { hoelzer = spielerzug(hoelzer,k); ausgabe(); printf("\nEs sind noch %d Streichhoelzer uebrig!\n", hoelzer); if (hoelzer==1) { printf("\nGratuliere, Sie haben gewonnen!\n"); r=0; result(r); //Startet Funktion result und übergibt Parameter r break; //Schleife verlassen } hoelzer = computerzug(hoelzer,k); ausgabe(); printf("\nEs sind noch %d Streichhoelzer uebrig!\n", hoelzer); if (hoelzer==1) { printf("\nDer Computer hat gewonnen!!!\n"); r=1; result(r); //Startet Funktion result und übergibt Parameter r break; //Schleife verlassen } } getch(); closegraph(); // Grafikmodus verlassen }
-
Da du vom Wechseln der Fenster sprichst und dein Sourcecode wie der vom Borland Graphics Interfac aussieht nehme ich an du benützt. WinBGI oder?
-
Wo auch immer <conio.h> eingebunden werden kann, kann man alternativ dazu meistens auch <windows.h> oder "d3d9.h" einbinden. Entweder mit GDI-Funktionen oder (vorzugsweise) mit Direct3D-Funktionen arbeiten.
Es benötigt gar nicht einmal so furchtbar viel Einarbeitungszeit, wie man vielleicht annehmen würde. Und ruckzuck zaubert man Grafiken in den Bildschirm hineinl, die groß und bunt sind. Wie so vieles von Winzigweich.
-
@Glcok17L ... ja da öffnet sich ein WinBGI Fenster.
Kann ich das BGI Fenster in der Größe und Position verändern ?!
mfg Andi84
-
Leider hat das mit ANSI C wenig zu tun. Da WinBGI imho aber auch nicht in eines der anderen Fachforen gut passt, schieb ich mal ins rudpf.
-
Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich würde aber noch immer gerne wissen ob ich das BGI Fenster in der Größe und Position verändern kann ?!
mfg & thx Andi84