Ampel
-
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
-
quelltext wieder entfernt ;I
ich hab mir das da jetzt so zusammen gebastelt

klappt auch soweit alles. =DDD (so macht das auch spass)1. jetzt wuerde ich das aber gerne so machen, dass wenn es abgelaufen ist wieder von vorne starten kann, weil jetzt kann ich nichts mehr machen ausser beenden und neustarten.
2. wenn ich den knopf drueck und dann enter im programm ablauf macht es auch noch bis zum ende weiter aber schliesst es dann sofort. kann man das irgendwie unterbinden? das man in derzeit wo das programm laeuft kein enter druecken kann?
erst nach ablauf des programms.zum programm, weis nicht ob das so gut ist, denke mal da kann man noch viel anderes machen, besonders das mit den kreisen?! da hab ich ja jetzt 3 mal void gemacht.

und nochmal ein riesen dank an dich f.-th

mfg ExEcUt!oNeR
-
1. Du könntest eine do-while-schleife verwenden.
2. Eventuell system("pause") oder mit STRG-F5 debuggen, anstelle von getch().
-
also das mit der system("pause"); klappt

die do-while-schleife O.o weiss ich noch nicht so ganz wie ich die da rein bekomm.
irgendwie funzt das alles nicht, da beendet er sofort mein programm =(.mfg ExEcUt!oNeR
-
Wie sieht denn deine Schleife bisher aus, was ist die Abbruchbedingung für die Schleife?