Ampel
-
Ich arbeite mit dev-c++ und oben steht c/c++ Forum da muesste ich doch hier richtig sein oder nicht? ;).
und wenn nicht bitte verschieben

ExEcUt!oNeR
-
Der DEV ist zum
1. schon mal ein wenig älter -> schau dir Code::Blocks 10.05 mit den MinGW 4.4.1 an.
2. ohne Zusatzbibliothek geht bei dem Quelltext mit dem DEV gar nichts, oder hast du die Headerdatei "graphics.h" auf deinem PC?
3. das ist C-Quelltext also gehören C-Header oben darüber und keine C++ Header.
4. der von dir gefundene Quelltext ist fast 20 Jahre alt im Original.So nun hast du die Wahl das ganze neu aufzubauen, aber da musst du zu Klimmzügen greifen, denn Farbe ist weder in C noch in C++ vorgesehen.
Oder DOS 5.0, oder ähnlich, installieren und einen Borland-Compiler von damals draufsetzen und das Resultat darauf laufen lassen
Du hast die Wahl

f.-th.
-
ExEcUt!oNeR schrieb:
Ich arbeite mit dev-c++ und oben steht c/c++ Forum da muesste ich doch hier richtig sein oder nicht? ;).
Zu DevC++ fällt uns vor allem dies hier ein:
http://www.c-plusplus.net/forum/237002und wenn nicht bitte verschieben

Die Frage ist: Wohin? Niemand macht mehr was in Dev C++.
Du benötigst irgendeine Art Warteschleife, besser noch einen Wartethread (kann man bei Dev C++ Threads machen?). Nehmen wir mal an, eine Warteschleife:
while(! programm_beendet) { if (pruefe_ob_button_gedrückt()) lass_ampel_laufen(); if (pruefe_ob_programm_beendet()) programm_beendet=true; sleep(/*ein paar sekundenbruchteile*/); }Das sleep sorgt dafür, dass dein Programm nicht mit 100% Prozessorlast wartet. sleep ist jedoch kein Standardbefehl, da musst du mal gucken, wie das bbei dev c++ geht. Es geht jedenfalls darum, das Programm kurz warten zu lassen.
Das Prüfen, ob button gedrückt wurde: Ich nehme an, irgendwoher bekommst du eine Mausposition? Sonst würdest du ja gar nicht erst fragen. Damit sollte es einfach sein, eine Funktion zu schreibendie prüft, ob die Maus im richtigen Bereich ist und ob sie gerade gedrückt ist.
edit: f.-th. kennt sich da besser aus als ich: Wenn das alles Erweiterungen von Turbo C++ sind statt von Dev C++, dann kannst du alles vergessen was ich geschrieben habe, außer das über das Alter von Dev C++.
-
Hab noch etwas gefunden
Mit der genannten Zusatzbibliothek geht das eventuell:
http://www.techniker-forum.de/elektrotechnik-30/borland-bgi-graphics-h-devc-alternative-543Wenn so was verwendet wird, sollte darauf hingewiesen werden. So gibt es Kommentare wie von mir zuvor

MfG f.-th.
-
Mist, Link sollte:
http://www.techniker-forum.de/elektrotechnik-30/borland-bgi-graphics-h-devc-alternative-54378.htmlMfG f.-th.
-
wir haben das programm in der schule bekommen, haben davor mit Robot Karol angefangen. ich denke mal ich muss das mit dem programm machen, bleibt mir ja nichts anderes ueber.
er hat uns das programm gegeben und die aufgabe und sollen uns alles selbst erarbeiten, aber komm einfach nich weiter.
keiner kann mir wirklich helfen
,da es entweder ein anderes programm ist oder weil ich es nicht verstehe ^^.
im internet finde ich auch einfach nichts dazu -.-
@f.-th bei punkt 1 kann ich garnichts mit anfangen
@seppj das geht nicht ^^, muss dem ja auch sagen wo der schalter in meine grafik ist O.o bevor ich ihn druecken kann....im guten und ganzen ^^ ich weiss nicht weiter.
mfg ExEcUt!oNeR
-
Okay, ich hab nicht erwartet das das bei dir so heftig wird.
Also vom Auftragsteller verdonnert.
Hier schon mal ein Link zu jemand der ähnliche Probleme hatte:
http://www.c-plusplus.net/forum/p1803436Da ist auch so ein spezieller Quelltext zu sehen.
Hast du die Bibliothek schon so eingebunden das du farbige Figuren auf dem Bildschirm darstellen kannst?
MfG f.-th.
-
Bestätige bitte ob das folgende Bibliothek ist:
http://codecutter.org/tools/winbgim/Im Zweifel könnte es mehrere ähnliche Projekte geben.
Wenn es ein Anderes ist, dann den Namen und eventuell ein Link zu dem Teil.MfG f.-th.
-
so hab mal geguckt, das ist die bibliothek die du da gelinkt hast.
ja meine ampel hab ich soweit.
hab ein grafikfenster was 150*500 ist und dann einen kasten mit linien gemacht und 3 farbige kreise drin wie ne ampel.
unten habe ich noch einen kleinen kasten gemacht der mein knopf darstellen soll zum drauf druecken zum starten der ampel.vielen dank fuer deine hilfe
f.-thmfg ExEcUt!oNeR
-
Ist folgender Quelltextausschnitt so beabsichtigt?
//Kreis 2 im Grafikfenster für Ampel midx = getmaxx() / 2 + 2; midy = getmaxy() / 6 + 145 ; setcolor(YELLOW); //+YELLOW+YELLOW+YELLOW); oder sollte das wie du es hattest setfillstyle(1, YELLOW); //255+200+0); oder sollte das wie du es hattest fillellipse(76, 228, 49, 49); circle(midx, midy, radius);Kommentar im Quelltext. Oder ist der Quelltext schon mit Leuchte an/aus?
Nun hast du ja erst den Anfang. Wenn du das per Maus starten möchtest und die Leuchten leuten sollen oder nicht, fehlt noch ein wenig Quelltext.
MfG f.-th.
-
Hier noch ein wenig Quelltext:
// dunkelgrauer Knopf setfillstyle(1, DARKGRAY); bar( 40, 460, 120, 480 ); while (!dgray_clicked) { if (ismouseclick(WM_LBUTTONDOWN)) { getmouseclick(WM_LBUTTONDOWN, x, y); dgray_clicked = (getpixel(x, y) == DARKGRAY); } } cout << "The mouse was clicked at: "; cout << "x=" << mousex( ); cout << " y=" << mousey( ) << endl;Keine Ahnung ob ihr etwas damit anfangen könnt.
MfG f.-th.
-
also das mit den farben geht irgendwie nicht anderes, das eine ist der aeusser ring von dem kreis und das andere der innere ^^, ich koennte einen weg machen aber das kann ich dann noch machen.
anfangs hatte ich probleme mit der farbe deswegen steht da yellow,yellow usw da es dann dunkler wuerde.
danke werde das mal ausprobieren mit dem knopf
melde mich obs klappt riesen dank jedenfalls fuer deine muehen.mfg ExEcUt!oNeR
-
ja wenn ich drauf druecke aufm den knopf soll es wie ne ampel laufen, die haben sollen dann lightred oder sowas werden.
gibt ja amplen da sieht man die farbe bisschen, wie gesagt kann ich aber noch rausnehmen. mein quelltext ist bis jetzt nur die grafik das ist das einzige was ich hinbekomme ;I die ganze funktionen bin ich noch garnicht zu gekommen.Bei einem Mausklick auf dem Knopf ('Knpofdruck') soll unten im Fenster der Text 'Signal kommt' erscheinen
Die Ampel ist Standardmäßig grün
Nach erfolgten Knopfdruck soll die Ampel nach einer zufälligen Zeit (1 bis 15 Sekunden) für drei Sekunden auf gelb, dann auf rot springen
Nach einer halbminütigen Rotphase geht die Ampel für eine Sekunde in die Rot/Gelbphase, danach in die Grünphase
Zu Beginn der Gelbphase wird der Text 'Signal kommt' wieder gelöscht
so das kommt noch dazu ;/
-
Die Infos, die ich noch weggelassen hab bekommst du schon hin

Muss gestehen das ich zu bequem bin das mit den Farben zu testen - Borland konnte nur 16 Farben bei 640x480 serienmässig.
Teste das Ersetzen der Farbentexte mal mit Zahlen zwischen 0 und 255 ( oder höher ? ).
Kannst ja eine Farbtafel programmieren, wenn sehen möchtest was bei Farben geht.Viel Spass noch
f.-th.
-
da hoert der spass schon wieder auf

hab deins jetzt mit drin kommt :`dgray_clicked' undeclared (first use this function)
-.-hab wieder schon gesucht kann ich aber nichts wirklich mit anfangen. naja dann wollte ich deine box ausprobieren. nehm mein kaestchen raus und will deins benutzen ist deins gruen statt darkgray... Wenn ich, wo die anderen farben stehen, ne farbe wegneheme wird mein ganzer rand rot gelb oder gruen, wenn ich alles raus nehme ist alle auf einmal weiss.
ich dachte ich hab wenigstens die farben hinbekommen -.- scheint aber auch nichts zu passen.
will dich damit ja nicht nerven aber so macht das echt kein spass-.- :(((
mfg ExEcUt!oNeR
-
So schwer ist das aber nicht, da steht doch, es fehlen:
int x, y; // x and y pixel coordinates of a mouse click bool dgray_clicked;// Changes to true when a darkgray pixel is clickedWenn du mehrere gleichfarbige Felder hast, halt zusätzlich die Koordinaten abfragen und da ein paar nebeneinander gleichzeitig
Denn ob man zuverlässig ein einzelnes Pixel trifft?Beim Darstellen einer Leuchte, überlege mal ob du das nicht in eine Funktion bekommst, dann wird der Quelltext übersichtlicher.
MfG f.-th.
-
so einfach ist das nicht 
woher weiss ich das ich bool hinschreiben muss? -.-
naja also soweit klappt es dass er sich beschwert, aber ich hab noch das problem mit den farben.
wenn ich das kaestchen nach unten schreiben nimmt es die farbe von der letzte ampelfarbe an, erst gruen wenn ich das wegnehme orange und dann rot, wenn ich alles raus nehme seh ich nichts mehr.
wenn ich es nach oben setzte ueber die ampelfarben dann wird es nur weiss egal welche farbe ich reinschreiben, nichmal schwarz will das scheiss ding werden.
dann habe ich ueberall WHITE rein geschrieben da das feld ja eh weiss ist, hat aber nichts gebracht. hab auch noch else hingeschrieben, weil ich wollte das er schreibt das ich vorbei gedrueckt haben, aber sobald ich das programm starte hat er gleich "daneben" gesagt

dir x und y habe ich werte im weissen kasten genommen das sollte ja auch so richtig sein. wenn ich den knopf druecke hab ich ja noch dazu geschrieben muesste "Signal kommt" kommen. das kommt aber auch nicht.
hat aber alles kein erfolg.// dunkelgrauer Knopf
bar( 110, 459, 140, 490 );
setfillstyle(1, WHITE);
while (!dgray_clicked);
{
if (ismouseclick(WM_LBUTTONDOWN)) <---glaube da darf kein ; stehen wie du es geschrieben hast ^^ dann hat er keine abfrage gemacht. (glaube ich)
{
getmouseclick(WM_LBUTTONDOWN, x, y);
dgray_clicked = (getpixel(123, 474) == WHITE);
outtextxy(10,467,"Signal kommt");
}
}was du da bei den farben meinst weis ich nicht so recht habe jetzt ueberall das midx und midy raus genommen das ist dann ja doppelt, wenn ich aber setcolor wegnehme bleibt um rand ein weisser kreis
muss also bleiben./* midx = getmaxx() / 2 + 2;
midy = getmaxy() / 6 + 5; */
setcolor(RED);
setfillstyle(1, RED);
fillellipse(76, 88, 50, 50);
//circle(midx, midy, radius);-.- ist mir echt schon peinlich

mfg ExEcUt!oNeR
-
weis nicht ob es was zu sagen hat, aber da stimmt glaube noch mehr nicht...
wenn ich das auf mein laptop ziehe und daran arbeiten will ist kein kreis mehr da. -.- selbst wenn ich das alles zurueck mache was ich raus ge/* habe.bloedes programm

mfg ExEcUt!oNeR
-
Hier mal der Farbtest:
#include <cstdlib> #include <iostream> #include <graphics.h> using namespace std; void leuchte(int posv, int posh, int lcolor) { int hpos; hpos = 20 + posh * 20; // setcolor(lcolor); setfillstyle(1, lcolor); fillellipse(posv, hpos, 9, 9); } int main(int argc, char *argv[]) { int gdriver = DETECT, gmode, errorcode; int i, p; int x, y; // x and y pixel coordinates of a mouse click bool dgray_clicked;// Changes to true when a red pixel is clicked //Grafikfenster grösse 150x500 initwindow(150, 500); //Linien im Grafikfenster für die Ampel line(140, 10, getmaxx()-9, getmaxy()-50); line(9, 10, getmaxx()-140, getmaxy()-50); line(9, 10, getmaxx()-9, getmaxy()-489); line(9, 449, getmaxx()-9, getmaxy()-50); outtextxy(10,460,"Farbtest"); //read result of initialization errorcode = graphresult(); if (errorcode != grOk) //Wenn ein Fehler Auftritt { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); //Mit einen Fehlercode beenden } for(i = 0; i < 20; i++) leuchte( 50, i, i); // dunkelgrauer Knopf setfillstyle(1, DARKGRAY); bar( 120, 460, 140, 490 ); while (!dgray_clicked) { if (ismouseclick(WM_LBUTTONDOWN)) { getmouseclick(WM_LBUTTONDOWN, x, y); dgray_clicked = (getpixel(x, y) == DARKGRAY); } } // um folgendes zu starten -> Maus auf grauen Button klicken und anschliessend // Taste der Tastatur drücken solange sich Farbe ändert. for(p = 0; p < 8000; p++) { getch(); for(i = 0; i < 20; i++) leuchte( 80, i, p * 16 + i); // -> eventuell andere Werte als 16 testen } //Grafikfenster und Konsole schliessen getch(); closegraph(); //system("PAUSE"); return EXIT_SUCCESS; }Bedienung im Quelltext beschrieben.
Erst sieht es so aus als ob nur 16 Farben da wären.
Wenn ihr aber nach dem Mausklick auf den grauen Button, entweder die Tastatur quält oder einfach den Finger auf der Taste parkt, seht ihr das noch andere Farben möglich sind. Nur die Logik hab ich ( noch ) nicht
Warum das bei dir auf dem Laptop anders aussieht? Keine Ahnung.
MfG f.-th.
-
ok das ist schonmal super ^^ ich werde mir da mal was zusammen basteln

echt besten dank fuer die ganze hilfe
^^ denke morgen abend hab ich wieder was fuer dich xDDDDDDDDDDDDDD.
melde mich wie es laeuft
mfg ExEcUt!oNeR