Autor Beitrag
Stread
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 188

Win 7
Delphi XE
BeitragVerfasst: Fr 15.05.09 15:29 
Hi

ich möchte mich gerne an ein neues Delphi Projekt wagen und mit eurer Hilfe schaffe ich es hoffentlich.
Also: Ich habe in meinem Programm einen weißen Hintergrund und alle 5 sec kommt ein Rechteck in einer anderen Farbe. Wenn ein grünes kommt soll die Maus auf das Rechteck gehen und darauf klicken. Wenn ein rotes kommt soll auf einen festen Button gehen und darauf klicken.

Wie funktioniert das und wie ist das für einen Anfänger leicht umzusetzen?

Danke

Stread
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 15.05.09 15:34 
Moin!

Nette Idee (für ein Einsteiger-Projekt), das sollte mit ein paar Zeilen Code machbar sein. :zustimm:

Wenn du dann noch die durchschnittliche Zeit bestimmst, die man zum Klicken braucht, haste auch gleich einen Wert für die Bestenliste. :idea: ;)

@all: Bitte, keine fertigen Codes liefern - er hat ja nichtmal danach gefragt... :?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 15.05.09 15:36 
Per Timer ein Rechteck zufällig bestimmen und in einem Feld des Formulars speichern, dann PaintBox.Invalidate aufrufen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
type
  TForm...
  private
    CurrentRect: TRect;
Dann kannst du eine TPaintBox und OnPaint benutzen und darin das jeweils aktuelle Rechteck zeichnen.
In OnClick der TPaintBox prüfst du mit PtInRect ob in das aktuelle Rechteck geklickt wurde.

Da so als grober Umriss. ;-)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 15.05.09 15:41 
Moin!

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dann kannst du eine TPaintBox und OnPaint benutzen und darin das jeweils aktuelle Rechteck zeichnen.
In OnClick der TPaintBox prüfst du mit PtInRect ob in das aktuelle Rechteck geklickt wurde.
Klar, geht. :nixweiss: Wäre auch "sauber", aber ich glaube als Anfänger vielleicht ein Ticken zu schwer... :?

Mein Vorschlag:
  • Panel als Klickfläche nehmen (dann kann man auch die "Daneben-Klicks" zählen und vom Score abziehen" 8))
  • Im Timerereignis ein Shape in der Größe/Position/Farbe setzen (kann ja immer das gleiche Objekt sein, einfach per .Visible verstecken), dessen OnMouseDown liefert das "Angeklickt"-Ereignis
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 15.05.09 15:43 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Wäre auch "sauber", aber ich glaube als Anfänger vielleicht ein Ticken zu schwer... :?
Naja, wenn man es erst einmal verstanden hat wie das logisch abläuft, dann geht das.

Ich meine viel Quelltext ist es ja nicht, und wenn man OnPaint und so einmal ausprobiert, sollte das schon gehen.
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Fr 15.05.09 15:45 
Stread, wenn ich Dich gerade richtig verstanden habe, dann möchtest Du ein Reaktionsprogramm selber schreiben - oder?
Oder möchtest Du einem Reaktionsprogramm damit eins "auswischen", indem Du immer einen Mausclick darauf innerhalb einer Millisekunde simulierst?

Wenn es denn das erste ist, dann könntest Du das ganze doch mit einem Panel machen, dessen OnClick(Sender) Du dann als getroffen-Ereignis nimmst.
Die Veränderung der Position kannst Du mit random(clientHeight-Panel.Heigth) und random(clientWidth-Panel.Width) bestimmen.

Reicht das als Erklärung?
- Oder war das jetzt schon zu viel? (Ich hoffe nicht!)
Stread Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 188

Win 7
Delphi XE
BeitragVerfasst: Fr 15.05.09 16:05 
Eure Idee mit einem Reaktionsprogramm ist auch gut aber ich meinte eher dass das Programm die Maus selbstständig auf das Rechteck bewegt und dann daraufklickt. Also: Ich klicke auf den Start Button und es kommen im Anstand von 3sec 4 verschiedenfarbige Rechtecke. Wenn eins davon grün ist soll die Maus daraufgehen und es anklicken.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 15.05.09 16:18 
Moin!

user profile iconStread hat folgendes geschrieben Zum zitierten Posting springen:
aber ich meinte eher dass das Programm die Maus selbstständig auf das Rechteck bewegt und dann daraufklickt. Also: Ich klicke auf den Start Button und es kommen im Anstand von 3sec 4 verschiedenfarbige Rechtecke. Wenn eins davon grün ist soll die Maus daraufgehen und es anklicken.
Das Programm soll gegen sich selbst spielen (bei so einer typischen Menschen-Aufgabe)? :gruebel: Was macht das für einen Sinn... :? :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Stread Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 188

Win 7
Delphi XE
BeitragVerfasst: Fr 15.05.09 16:23 
Ich habe nie etwas von Mensch-Aufgabe oder Reaktionstest geschrieben. Auch nie etwas von Punkten oder Highscore. Ich möchte nur dass das Programm die Unterschiedlichen Farben (später auch an unterschiedlichen Positionen) erkennt und bei einer Farbe die Maus auf diese Farbe ausrichtet.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.05.09 17:25 
Das verstehe ich nicht. Sind die Farben zufällig? Wenn nicht, weißt Du ja, wann grün kommt (schließlich musst Du das ja selbst befehlen), da gibt es nichts zu erkennen.
Stread Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 188

Win 7
Delphi XE
BeitragVerfasst: Fr 15.05.09 17:44 
Mensch, ist das denn so schwer zu verstehen? Das soll einfach nur ein einfaches Programm sein um den richtigen Code zu lernen
ausblenden Delphi-Quelltext
1:
2:
3:
Schaue ob die Farbe grün irgendwo in dem Bild vorkommt.
Wenn ja: Richte den Mauszeiger darauf aus und betätige linke Maustaste.
Wenn nein: mache nichts.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 15.05.09 17:45 
Moin!

user profile iconStread hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe nie etwas von Mensch-Aufgabe oder Reaktionstest geschrieben. Auch nie etwas von Punkten oder Highscore.
Das ist richtig, da waren wir wohl etwas schnell mit der Phantasie dabei... :lol:

user profile iconStread hat folgendes geschrieben Zum zitierten Posting springen:
Ich möchte nur dass das Programm die Unterschiedlichen Farben (später auch an unterschiedlichen Positionen) erkennt und bei einer Farbe die Maus auf diese Farbe ausrichtet.
Tja, auch hier frage ich mich: was soll das bringen? Sollen wir jetzt eine Klick-Bot-Vorlage für dich entwickeln? :gruebel: Wäre die einzige Anwendung, der mir dazu einfällt... (nämlich eben in einem Bild zu suchen, das nicht von deiner Anwendung erzeugt wurde) :? Das wiederum ist nach meiner Ansicht überhaupt kein gutes Einsteigerprojekt. Und einfach ist es auch nicht. :| und wenn ich so richtig drüber nachdenke, ist es auch für sonst niemanden ein gutes Projekt, weil es eigentlich viel zu viele illegale/unfaire Szenarien dafür gibt...

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.05.09 17:51 
Zumal "grün" erst einmal definiert werden muss, ohne Toleranzschwelle wird das sowieso nichts.
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Fr 15.05.09 18:17 
das ginge ja sehr einfach mit

ausblenden Delphi-Quelltext
1:
2:
3:
4:
RGB(R,G,B:Byte);
GetRValue(Col:TColor);
GetGValue(Col:TColor);
GetBValue(Col:TColor);


ich glaub so hießen die
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.05.09 18:24 
Klar heißen die so, aber was heißt jetzt grün? Du brauchst Schwellenwerte.
Stread Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 188

Win 7
Delphi XE
BeitragVerfasst: Fr 15.05.09 18:29 
Darf mann denn hier überhaupt nichts mehr fragen weil es vielleicht in Erwägung gezogen werden könnte dass der User damit vielleicht etwas böses anstellen könnte? :autsch:
Narses meinst du mit deinem Szenario einen Aimbot? Keine Sorge das will ich nicht, aber das haben alle wahrscheinlich gesagt :angel:
Man kanns mit der Sicherheit auch übertreiben.
Nein, es ist nicht mein erstes Projekt.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:

Tja, auch hier frage ich mich: was soll das bringen?


Spaß? Da ich noch am Anfang stehe suche ich mir halt immer neue Projekte aus. Und diesmal wollte ich etwas mit Mausbewegungen und Farben machen.

Wenn das automatische erkennen von Farben zu schwer ist könnte man ja auch den Kontrast schwarz/weiß nehmen. Oder eben genau die Nummer der Farbe die man verwendet hat.

Wenn ich mich jetzt noch einmal rechtfertigen muss frage ich halt woanderst nach. :(
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.05.09 18:31 
So nochmal: grün ist nicht gleich grün. Um das zu erkennen, musst Du "grün" zunächst definieren (in einem Bereich von bis).
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Fr 15.05.09 18:51 
ja mein Gott und das kann er ja mit den Funktionen machen. Das wird er dann ja feststellen, dass grün eher sowas wie

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function IsGruen(Col:TColor) : Boolean;
begin
  Result := GetGValue(Col) in [200..255] and
            GetRValue(Col) in [0..200] and
            GetBValue(Col) in [0..200]; 
end;


ist. Wenn sich jetzt jemand aufregt, dass das vollständiger Quelltext ist, dann möge Gott mir verzeihen und ich nehm das wieder raus;)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 15.05.09 18:54 
Moin!

user profile iconStread hat folgendes geschrieben Zum zitierten Posting springen:
Darf mann denn hier überhaupt nichts mehr fragen weil es vielleicht in Erwägung gezogen werden könnte dass der User damit vielleicht etwas böses anstellen könnte?
Es kommt schon darauf an, wie und wonach man so fragt. 8)

user profile iconStread hat folgendes geschrieben Zum zitierten Posting springen:
Narses meinst du mit deinem Szenario einen Aimbot? Keine Sorge das will ich nicht, aber das haben alle wahrscheinlich gesagt :angel:
Man kanns mit der Sicherheit auch übertreiben.
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Tja, auch hier frage ich mich: was soll das bringen?
Spaß? Da ich noch am Anfang stehe suche ich mir halt immer neue Projekte aus.
Schon klar, vermutlich der gleiche Spaß, den man beim Einstieg in die Netzwerkprogrammierung empfindet, wo man auch erstmal einen Portscanner schreiben muss... :roll:

user profile iconStread hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich mich jetzt noch einmal rechtfertigen muss frage ich halt woanderst nach.
Du musst dich nicht rechtfertigen, im Zweifel kriegst du nur keine Auskunft. ;) Wenn es dir lieber ist, woanders zu fragen, dann steht dir das natürlich frei. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.05.09 18:55 
Genau das habe ich ja mit Schwellenwerten gemeint, einfach so mit "=" vergleichen klappt in den wenigsten Fällen.