matthias94
Anmeldungsdatum: 25. April 2016
Beiträge: 7
|
Grüßt euch alle zusammen, ich mache es kurz, ich bin neu hier und ich brauche dringend Hilfe! Ich habe mich vor kurzem mit der Grafik-Programmierung beschäftigt und kann eigentlich schon recht viel....jedoch habe ich keine Ahnung wie ich das jetzige Problem lösen soll. Ich wollte das simple Programm aus diesem Video machen: https://www.youtube.com/watch?v=gibqiFtBARY Ich habe sogar den Code eins zu eins übernommen (hat nicht funktioniert) und da ich C++ programmiere habe ich auch in dem "initgraph" Befehl am Ende in der Klammer nach dem "&gm" eine "0" eingesetzt statt diesen ganzen krimms kramms in dem video ,der wahrscheinlich für c# ist oder so. Habe mich schon genug erkundigt. Eigentlich braucht man für diesen Befehl doch nur die graphics.h Bibliothek. Sooo, es geht eigentlich nur um den Befehl "struct arccoordstype", sowie der dazugehörige Befehl "getarccoords()", wenn ich das Programm starte steht bei mir immer nur " 'getarccoords' was not declared in this scope 'getarccoords()' " und gezeigt wird dabei auf die Klammer. Ich habe schon alle Möglichkeiten durch die mir eingefallen sind, ich habe versucht ein paar Änderungen vorzunehmen, aber nichts passiert.
Es geht nur um dieses getarccoords. Den Code Kopiere ich nochmal hier rein. Ich programmiere mit Geany als auch ab und zu mit dem Terminal an sich unter Joe. Code: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 | #include<graphics.h>
main(){
int gd=DETECT, gm,x,y, color, angle=0;
struct arccoordstype a ,b;
initgraph(&gd,&gm, 0);
delay(2000);
while(angle<=360)
{
setcolor(BLACK);
arc(getmaxx()/2, getmaxy()/2,angle,angle+2,100);
setcolor(RED);
getarccoords(&a);
circle(a.xstart,a.ystart,25);
setcolor(BLACK);
arc(getmaxx()/2, getmaxy()/2, angle, angle+2,150);
getarccoords(&a);
setcolor(GREEN);
circle(a.xstart,a.ystart,25);
angle = angle+5;
delay(50);
}
getch();
closegraph();
return 0;
}
|
Vielen Dank schonmal für die Hilfe!!
|
Dakuan
Anmeldungsdatum: 2. November 2004
Beiträge: 6345
Wohnort: Hamburg
|
Ich wusste gar nicht, dass es das Borland Graphics Interface noch gibt. Ist aber auch egal. Jedenfalls klingt WinBGIm doch sehr nach reiner Windows Software. Und außerdem, am Schluss des Codes wird "getch()" verwendet. Das gibt es bei Linux nicht. Sorry, hab das nochmal durchgelesen. Anstatt das bisher geschriebene zu löschen, frage ich lieber mal, wie Du das Ganze zusammenlinkst.
|
matthias94
(Themenstarter)
Anmeldungsdatum: 25. April 2016
Beiträge: 7
|
Dakuan schrieb: Ich wusste gar nicht, dass es das Borland Graphics Interface noch gibt. Ist aber auch egal. Jedenfalls klingt WinBGIm doch sehr nach reiner Windows Software. Und außerdem, am Schluss des Codes wird "getch()" verwendet. Das gibt es bei Linux nicht. Sorry, hab das nochmal durchgelesen. Anstatt das bisher geschriebene zu löschen, frage ich lieber mal, wie Du das Ganze zusammenlinkst.
getch() funktioniert einwandfrei unter Linux! Keine Ahnung wie du darauf kommst, dass es nicht funktionieren soll unter Linux. Alle Befehle die ich bisher benutzt habe, die in der graphics.h lib drinne sind, funktionieren. Wie gesagt das einzige ist der getarccoords().
Ich habe auch nicht die WinBGIm genommen sondern einfach eine kompatible graphics.h lib installiert, die auch funktioniert.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
matthias94 schrieb:
Ich habe sogar den Code eins zu eins übernommen (hat nicht funktioniert) und da ich C++ programmiere habe ich auch in dem "initgraph" Befehl am Ende in der Klammer nach dem "&gm" eine "0" eingesetzt statt diesen ganzen krimms kramms in dem video ,der wahrscheinlich für c# ist oder so. Habe mich schon genug erkundigt. Eigentlich braucht man für diesen Befehl doch nur die graphics.h Bibliothek.
Der Kram sieht wie ein Pfad zu irgendwas aus. Les' mal die Doku, was für ein Parameter da erwartet wird. Wieso Du meinst, dass das für C# sei, und Du es als C++ verwenden kannst, verstehe ich nicht.
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Dakuan schrieb: Und außerdem, am Schluss des Codes wird "getch()" verwendet. Das gibt es bei Linux nicht.
Über Zusatz-Includes schon. Aber da wir von C++ sprechen, würde ich ein cin.get() erwarten. /edit:
http://pubs.opengroup.org/onlinepubs/7908799/xcurses/getch.html
|
matthias94
(Themenstarter)
Anmeldungsdatum: 25. April 2016
Beiträge: 7
|
Oh, tut mir leid , das "initgraph(&gd, &gm, 0);" war noch von mir xD. Im Video hat er da was anderes, was aber halt auch nicht funktioniert.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
matthias94 schrieb: Oh, tut mir leid , das "initgraph(&gd, &gm, 0);" war noch von mir xD. Im Video hat er da was anderes, was aber halt auch nicht funktioniert.
Im Video steht da was wie "C:\\...", also ein Windowspfad mit Laufwerksbuchstabe, so was gibt es auf modernen Betriebssystemen nicht. ☺ Dass das auf Linux nicht geht überrascht nicht. Wieso man einfach auch 0 nehmen können soll, erschließt sich mir nicht. Du musst wohl die Dokumentation aufsuchen und rausfinden, was da hin muss. Wildes Probieren ist oft kein guter Lösungsweg.
|
Developer92
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
user_unknown schrieb: matthias94 schrieb: Oh, tut mir leid , das "initgraph(&gd, &gm, 0);" war noch von mir […]
Wieso man einfach auch 0 nehmen können soll, erschließt sich mir nicht.
Je nach Implementierung wird da tatsächlich eine 0 oder auch ein leerer String übergeben. Allerdings nur unter Windows, unter Linux übergibt man initgraph() bei den mir bekannten Implementierungen die Breite und die Höhe. Dass es sich um ein Windows-Programm handelt könnte man auch anhand der Deklarierung der main-Funktion erkennen. Für Linux fehlt da ein (int argc, char *argv[]) ☺
matthias94 schrieb: Sooo, es geht eigentlich nur um den Befehl "struct arccoordstype", sowie der dazugehörige Befehl "getarccoords()", wenn ich das Programm starte steht bei mir immer nur " 'getarccoords' was not declared in this scope 'getarccoords()' " und gezeigt wird dabei auf die Klammer.
Ich kann mir das Video gerade nicht ansehen, allerdings kenne ich die Funktion getarccoords() auch nicht. Kann es sein, dass du dir diese mittels Funktionen aus math.h eventuell noch selbst basteln musst? Edit: Ich hab da doch noch was gefunden:
getarccoords function is used to get coordinates of arc which is drawn most recently.
Der struct-Datentyp ist wie folgt definiert: | struct arccoordstype
{
int x, y;
int xstart, ystart;
int xend, yend;
};
|
Nur die Implementierung von getarccoords() fehlt noch ☺
|
matthias94
(Themenstarter)
Anmeldungsdatum: 25. April 2016
Beiträge: 7
|
So , ich zeig euch mal jetzt n Foto wie es ganz simple aussieht beim mir und es geht einfach nicht. Es befindet sich im Anhang, unten seht ihr die Fehlermeldung und es ist immer die selbe.
- Bilder
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
matthias94 schrieb: So , ich zeig euch mal jetzt n Foto wie es ganz simple aussieht beim mir und es geht einfach nicht. Es befindet sich im Anhang, unten seht ihr die Fehlermeldung und es ist immer die selbe.
Developer92 schrieb: Nur die Implementierung von getarccoords() fehlt noch ☺
Genau das sagt dir die Fehlermeldung auch.
|
matthias94
(Themenstarter)
Anmeldungsdatum: 25. April 2016
Beiträge: 7
|
Das ist mir auch klar! Habe auch schon ganze zeit geschrieben, dass ich schon alles probiert habe! Ich habe keine Ahnung was ich nun machen soll wegen dieser Meldung. Kann jemand nicht bitte einfach dieses programm mal ausprobieren und gucken obs bei dieser Person klappt? Und wenn er diese Meldung auch bekommt und eine Lösung hat ,kann man diese einfach hier reinschreiben. Ist doch am einfachsten.
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Die Meldung besagt, dass du die Funktion getarccoords() selbst definieren musst. Das haben hier auch schon mehrere geschrieben. Wenn du Programmieren lernen möchtest, kann Dir das keiner abnehmen... Falls du möchtest, dass dir jemand ein Programm schreibt, sähe das natürlich anders aus.
|
matthias94
(Themenstarter)
Anmeldungsdatum: 25. April 2016
Beiträge: 7
|
Ja okay, ich brauche jemanden der mir hilf dieses programm zum laufen zu bekommen. Wie ich ja auch schon vorher OFT gesagt habe, geht es nur um den getarccoords(). Die eigentliche Funktion ,,struct arccoordstype" scheint der Compiler ja zu akzeptieren. Deswegen verstehe ich das nicht, wieso der Befehl der dazu gehört , nicht funktioniert. Bitte kann das jmd mal ausprobieren ?
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Es wird kein anderes Ergebnis dabei rauskommen. Ein struct ist auch keine Funktion, sondern eine Gruppe von zugehörigen Variablen.
Wie ich ja auch schon vorher OFT gesagt habe, geht es nur um den getarccoords().
Und wie wir OFT gesagt haben, musst du diese SELBST SCHREIBEN. Das gibbet nicht fertig, außer vllt in deinem Tutorial. Ich würde vorschlagen, dass du erst ein Grundlagen-Tutorial zu Cpp durchackerst, bevor du an Grafik gehst, damit du mit den Aussagen zurecht kommst. Ich helfe gern, insofern ich das kann, aber auch nicht bedingungslos ☺
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
ChickenLipsRfun2eat schrieb: Es wird kein anderes Ergebnis dabei rauskommen. Ein struct ist auch keine Funktion, sondern eine Gruppe von zugehörigen Variablen.
Meines Wissens ist das eine Typdeklaration, d.h. | struct arccoordstype a, b;
|
Definiert 2 Variablen a und b als vom Typ arccoordstype.
Und wie wir OFT gesagt haben, musst du diese SELBST SCHREIBEN. Das gibbet nicht fertig, außer vllt in deinem Tutorial.
Wenn der Code vollständig aus dem Tutorial übernommen ist - mir ist das zu klein um da was zu erkennen und Videos sind natürlich auch schlecht durchsuchbar - dann kann die Methodendeklaration nur aus der graphics.h kommen. Das getch muss demnach auch daher kommen und kann schlecht aus ncurses stammen, selbst wenn es dort eine solche Funktion gibt. Die Frage ist also, woher hast Du die graphics.h? Woher weißt Du, dass die kompatibel ist zu der im Video verwendeten?
|