| Autor |
Beitrag |
Struppi
      
Beiträge: 41
|
Verfasst: Mo 21.05.07 09:15
ich hoffe mal, dass ich jetzt hier nicht im völlig falschen bereich bin ...
ich arbeite ja momentan an sonem kleinen spiel im stile von moorhuhnjagd, also einfach vögelchen die durch die landschaft fliegen und abgeschossen werden sollen. (siehe der "grafiken einfügen" thread)
das mit dem fliegen klappt schon so halbwegs, jetzt hatte ich mir folgendes überlegt ... :
ist es irgendwie möglich, per zufall 1) die startzeit und 2) den startpunkt der vögel innerhalb von festgesetzten werten zu regeln ???
ich habe keine ahnung wie man mit delphi einen zufall generiert, die suche hier und mit google hat zwar einiges rausgespuckt, aber das hat mich nur noch mehr verwirrt
greetz
struppi Moderiert von Klabautermann: Topic aus Sonstiges (Delphi) verschoben am Mo 21.05.2007 um 12:31
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 21.05.07 09:28
Moin!
Schau dir mal Randomize, Randomund RandomRangein der Delphi-Online-Hilfe an, damit kommst du weiter.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Struppi 
      
Beiträge: 41
|
Verfasst: Mo 21.05.07 09:39
aye sir, hab ich gemacht ...
aber bei mir hapert es wie immer an den tags
wie weise ich dem random denn zu, dass er den timer, in dem sich das image bewegt einbinden soll ??
irgendwie klappt das nicht ...
und wo kann ich die startZEIT per zufall steuern ??
geht das damit auch ?? ich hab momentan nur rausgefunden, wie das image an zufällige koordinaten geschoben wird
greetz und vielen dank schon mal
struppi
|
|
passiv
      
Beiträge: 270
WIN XP Professional
Delphi 7 Enterprise, Java (Eclipse), Python 2.5, Django 1.1
|
Verfasst: Mo 21.05.07 10:12
das mit der zufälligen geschwindigkeit hab ich dir damals ja schon gezeigt^^
das mit den koordinaten (höhe) kannst du ja so machen:
Delphi-Quelltext 1: 2: 3: 4:
| var hoehe2:integer; randomize; hoehe2:=random(clientheigth-image2.heigth); image2.top:=hoehe2; |
_________________ Die Probleme, die es in der Welt gibt, sind nicht mit der gleichen Denkweise zu lösen, die sie erzeugt hat.
Albert Einstein
|
|
Struppi 
      
Beiträge: 41
|
Verfasst: Mo 21.05.07 10:20
zufällige geschwindigkeit weiß ich, mir geht es jetzt darum, den timer in dem ja das image liegt irgendwie zu einer zufälligen ZEIT vom rand aus starten zu lassen, da das mit dem reinfliegen der vögel außerhalb des fensters ja net so klappt wie ich will (siehe mein erster thread "grafiken ...")
es würde mir zur not auch reichen irgendwie festzulegen, wann der timer nach programmstart erst loslegen soll, aber das kann ich nich rausfinden.
und die sache mit dem zufall reizt mich jetzt
|
|
passiv
      
Beiträge: 270
WIN XP Professional
Delphi 7 Enterprise, Java (Eclipse), Python 2.5, Django 1.1
|
Verfasst: Mo 21.05.07 11:06
naja, der timer hat selbst einen parameter der heißt enabled (boolean). wenn er false ist läuft der timer nicht und bei true schon. und jetzt kannst du mit einem klick auf den button enabled auf true setzen und die viecher fliegen. alternativ könntest du einen 2. timer setzen, der von anfang an läuft, den im oncreate (im anderen tread erklärt) per zufall füllen (auch schon erklärt)
_________________ Die Probleme, die es in der Welt gibt, sind nicht mit der gleichen Denkweise zu lösen, die sie erzeugt hat.
Albert Einstein
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Mo 21.05.07 12:02
Hi
Nun sagt ihm doch auch, das er mit einer zufälligen Zahl den Intervall beeinflussen kann und somit seine Ereignisse in einem Zeitfenster mal früher, mal später generiert.
Ich nehme an, das war die offene Frage...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| var zufall : Integer; .....
Zufall:=100+random(500); ..... Timer1.Interval:=Zufall; |
Gruß oldmax
_________________ Zier dich nich so, ich krieg dich schon....
|
|
Struppi 
      
Beiträge: 41
|
Verfasst: Mo 21.05.07 13:28
aaahh ...
vielen dank
genau, sagt das doch *schmoll*
|
|
Struppi 
      
Beiträge: 41
|
Verfasst: So 27.05.07 17:10
also irgendwie krieg ich das überhaupt nicht hin ...
ich bin jetzt so weit, dass die images so drinne sind wie sie sollen und sich auch bewegen, aber soviel ich es auch probiere, ich schaffs einfach nicht, sie zu einer zufälligen zeit an einem zufälligen punkt starten zu lassen ...
wie genau mache ich das mit dem randomize denn ??
ich steh irgendwie grade vollkommen auf dem schlauch und krieg garnix mehr hin 
|
|
Nisarö
Hält's aus hier
Beiträge: 8
Win XP
Delphi 6.0 PE
|
Verfasst: Mo 28.05.07 17:28
Hi, Struppi
das randomize schreibst du ganz einfach in den Quelltext an den Anfang (ich habs so gelernt, dass randomize sich nen Punkt in der Systemzeit rausnimmt und von da aus dann Zufallszahlen bildet).
Randomize ist also nur der Ausgangswert für ne Zufallszahl.... mit random(x) gibst du mit x nur den Bereich für die zu bildende Zufallszahl.
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.FormCreate(Sender: TObject); begin randomize; a:=random(1001); end; |
so ungefähr (is aus nem einfachenSpiel, welches wir mal im Unterricht porgrammiert ham)
Ich hoffe ich konnte helfen..
Mfg Nisarö
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Mo 28.05.07 17:46
oder mach einfach in nem timer
den ich mal spawntimer nenn ;D
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.SpawnTimer1Timer(Sender: TObject); begin if random(100) > 50 then begin If Random(2)+1 = 1 Then x:= 0 else x:= Welt.Width; Y:= Random(Spielwelt.Height); end; end; |
da machst den intervall auf eine sek oder so und dann wird aller 1-3 sek ne ente gespawnt ;D
|
|
Struppi 
      
Beiträge: 41
|
Verfasst: Mo 28.05.07 17:56
was ist denn zB welt.widt, du meinst damit doch den hintergrund, also die spielfläche, oder ??
aber wenn ich das dann Image1.width nenne (also mein background) markiert er das x und y als fehler
*wunder*
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Mo 28.05.07 18:04
jo damit mein ich die maße spielwelt
x und y musst du natürlich noch in der timerprozedur deklarieren (var x,y: Integer)
|
|
Struppi 
      
Beiträge: 41
|
Verfasst: Di 29.05.07 13:17
aber irgendwo in den timer muss ich doch noch
if ((Image2.Left + Image2.Width) < Form1.Width) then
Image2.Left := Image2.Left + 10;
reinpacken und ich muss irgedwo noch festlegen welches image (ente) überhaupt gespawnt werden soll, aber wo mach ich das denn ??????
|
|
Struppi 
      
Beiträge: 41
|
Verfasst: Sa 02.06.07 18:53
hey, irgendwer wird das doch wissen ???
|
|
Dragonclaw
      
Beiträge: 196
Windows Vista
Delphi 7 Prof.
|
Verfasst: So 03.06.07 01:51
Also, ich würde 2 Timer dazu nehmen:
1. einen Timer zum spawnen, mit nem Intervall von 2000 bis 50000
2. einen Timer zum Bewegen, mit nem Intervall von 20
1. Macht nichts andere als ein Array mit dem Cords der Images zu generieren.
Also brauchst du ein globales Array of TImage. Und immer wenn ein Hühnchen dazu kommt, erstellts du ein neues Image und
immer wenn eins abgeschoßen wird, entfernst du das Image aus dem Array.
2. Bewegt die ganzen Images, in dem es das Array in ner Schleife durchläuft und immer die X oder die Y Koordinate ändern.
Einfach eine simple for schleife die alle elemente durch läuft und entweder + 10 oder - 10 zu left addiert, bzw.
außerdem alle Hühnchen löst die außerhalb des Spielfeldes sind.
|
|
Struppi 
      
Beiträge: 41
|
Verfasst: So 03.06.07 11:14
uff, wie funktioniert das mit den arrays denn ??
also, dass ein neues viech erstellt wird und es am rand dann verschwindet ??
sorry für die dummen fragen, aber ich bastel hier rum wie blöde und nix funktioniert mehr 
|
|