Autor Beitrag
Struppi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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 user profile iconKlabautermann: Topic aus Sonstiges (Delphi) verschoben am Mo 21.05.2007 um 12:31
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 21.05.07 09:28 
Moin!

Schau dir mal Randomize, Randomund RandomRangein der Delphi-Online-Hilfe an, damit kommst du weiter. :les: :mahn: ;)

cu
Narses

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



BeitragVerfasst: Mo 21.05.07 09:39 
aye sir, hab ich gemacht ...


aber bei mir hapert es wie immer an den tags :D

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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 270

WIN XP Professional
Delphi 7 Enterprise, Java (Eclipse), Python 2.5, Django 1.1
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 270

WIN XP Professional
Delphi 7 Enterprise, Java (Eclipse), Python 2.5, Django 1.1
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: 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...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var zufall : Integer;
   .....

  Zufall:=100+random(500); //mindestens 100ms, höchstens 600ms

   .....
  Timer1.Interval:=Zufall;


Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....
Struppi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Mo 21.05.07 13:28 
aaahh ...

vielen dank :D



genau, sagt das doch *schmoll*
Struppi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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
BeitragVerfasst: 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.


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Mo 28.05.07 17:46 
oder mach einfach in nem timer
den ich mal spawntimer nenn ;D
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.SpawnTimer1Timer(Sender: TObject);
begin
  if random(100) > 50 then //je kleiner die "50" ist desto öfter wird eine ente gespawnt
  begin
    If Random(2)+1 = 1 Then x:= 0 else x:= Welt.Width; //legt spawnpunkt fest linker bildschirmrand oder rechter
  Y:= Random(Spielwelt.Height); //horizontalerspawnpunkt
//dann proezedur zum erstellen der ente aufrufen und x und y übergeben
  end;
end;


da machst den intervall auf eine sek oder so und dann wird aller 1-3 sek ne ente gespawnt ;D
Struppi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Sa 02.06.07 18:53 
hey, irgendwer wird das doch wissen ???
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: 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 :D