![]() |
Random Probelm
So hi habe wieder ein Problem und hoffe hier auf Hilfe.
Ich möchte folgendes erreichen: Das Programm soll immer random buchstaben ausgeben! Lösung: Ich habe einen Timer genommen der jede Minute "zuschlägt".
Delphi-Quellcode:
So also er soll ebend die Buchstaben immer im random ausgeben cool wäre noch wenn ihr mir erklären könnten wie ich den timer auch noch über random "steuern" kann. Also in ner zeitspanner von 1 sekunde bis 3 min.procedure Timer..... begin Randomize; Zufall := random (51) + 1; if Zufall = 1 then Keybd_Event(ord('A),0,0,0); if Zufall = 2 then Keybd_Event(ord('B'),0,0,0); ....... usw. end; |
Re: Random Probelm
Nun zuerst solltest Du ein ' nach A bei "Keybd_Event(ord('A),0,0,0);" hinzufügen.
Der Timer besitzt eine Einstellung Intervall (im OI). Diese gibt die Zeit in ms an. |
Re: Random Probelm
Über die Property "Intervall" der Instanz der TTimer-Klasse kannst du das Intervall setzen, bis das nächste Mal die Prozedur ausgeführt wird. :)
Delphi-Quellcode:
Das setzt du entweder einmal, damit das Intervall fest ist, oder am Ende jedes Prozedur-Aufrufs, dann verändert sich das Intervall jedes Mal.
Name.Intervall := (Random(180) +1) * 1000; // 180 Sekunden = 3 Min
|
Re: Random Probelm
auch solltest du das randomize nur einmal aufrufen, am besten im OnCreate der Form.
es gibt auch noch die case anweisung, damit sparst du dir die ganzen ifs. |
Re: Random Probelm
du könntest dir die ganzen If Anweisungen sparen indem du den Randombereich auf die ASCII Zeichen einschränkst..so:
Delphi-Quellcode:
du kannst das natürlich noch erweitern:
procedure Timer.....
begin Randomize; //nur 1mal aufrufen pack das ins OnCreate Zufall := random (26) + 65; //Alle Großbuchstaben aus der ASCII-Tabelle von 65 bis 90 Keybd_Event(Zufall, 0, 0, 0); end; ![]() Ich hoffe das hilft dir.... |
Re: Random Probelm
Ja super thx für die schnelle Antwort. Aber wie sage ich ihm den wann er welchen Buchstaben drücken soll also hab hier irgendwas von case Anweisung gelsesen wäre nett wenn jmd das nochmal kurz erklären könnte. Also wie ich ihm nun sage wenn die Zufallszahl 7 ist soll er z.B K schreiben oder so?
Danke in Vorraus Crazymodder |
Re: Random Probelm
ich dachte es ist schnuppe, welchen Buchstaben er schreibt, ich denke das soll Zufall sein?
Der Befehl Ord('X'), gibt im Endeffekt 88 Zurück, was wiederum in der ASCII-Tabelle steht. Also generierst du dir einfach eine Zahl aus der ASCII-Tabelle und das umformen sparst du dir dann, genauso wie die ganzen IF oder Case Anweisungen, weil du musst nicht mehr Prüfen, wenn 7 dann mach nen K, sondern wir generieren gleich das Ord('K'). Du kannst auch den ganzen Zeichensatz so benutzen, dazu machste dir nen Constantes Array mit allen ASCII-Werten die du willst du sprichst das dann per Random an. Falls du aber alles einzeln machen willst, nimm Case, dass funktioniert so:
Delphi-Quellcode:
case VARIABLE of
WERT1: begin ... end; WERT2: ... WERT3: ... ... WERTN: ... else ... end; |
Re: Random Probelm
[quote="Crazymodder"]
Delphi-Quellcode:
Mir ist nicht so recht klar warum Duprocedure Timer..... begin Randomize; Zufall := random (51) + 1; if Zufall = 1 then Keybd_Event(ord('A),0,0,0); if Zufall = 2 then Keybd_Event(ord('B'),0,0,0); ....... usw. end; bei random einen Maximalwert von 51 nimmst. Du könntest doch auch mit der Funktion randomRange arbeiten:
Delphi-Quellcode:
Dann schenkst Du dir die ganzen if oder case Abfragen.
procedure Timer.execute
var zufall:Integer; begin zufall:=randomRange(ord('A'),ord('Z')); keybd_Event(zufall,0,0,0); end; Grüße Klaus |
Re: Random Probelm
Gut okay ich glaube ich weiß jetzt wie aber ich will ja nur bestimmt buchstaben nämlich a,s,d,w,lerrzeichen,o,p,c,y und die sollen random gedrückt werden und manchmal halt auf 2 oder 3 gleichzeitig
Hierzu wäre ne kleine Hilfestellung nochmal ganz nett Danke im Vorruas Crazymodder |
Re: Random Probelm
dann machdas doch so:
Delphi-Quellcode:
procedure mach;
const chars: array[0..8] of integer = (97, 100, 115, 119, 32, 111, 112, 99, 121); begin Keybd_Event(chars[random(9)],0,0,0); end; was du aber mit dem Gleichzeitig meinst, weiß ich net... soll das nen Bot für nen PC spiel werden? Damit du AFK gehen kannst? Die Tasten könnten passen.... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz