| Autor |
Beitrag |
Slaughter_house
      
Beiträge: 16
|
Verfasst: Di 11.10.05 19:43
Tag Zusammen =) hab mich hier mal registriert da ich ne kleine Aufgabe zu bewältigen hab und um ein wenig Hilfe bitte ^^
Ich muss ein kleines Spiel in Delphi programmieren. Das Prinzip soll sein, Gegenstände durch klicken zu fangen. Der Geschwindigkeitsgrad soll sich je nach Eingabe verschnellern bzw langsamer werden usw. naja meine Frage an euch ist, ob ihr vll solche Programme besitzt und Queltext + Exe zur Verfügung stellt oder Seiten kennt, wo man die wichtigsten Befehle aufgezählt und erläutert bekommt.
lg Hell
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Di 11.10.05 19:45
Hallo und  erstmal!
Du erwartest jetzt aber nicht von uns, dass wir dir alles zusammensuchen inkl. Befehlen etc. und dir dann hier einen (halb)fertigen Quelltext vorlegen?
Alstar
|
|
Slaughter_house 
      
Beiträge: 16
|
Verfasst: Di 11.10.05 20:02
lol natürlich nicht ^^ ich hab mir gedacht, vll hat ja auch schon einer der Profis hier aus übungszwecken etc ein solch ähnliches Spiel gebastelt, wo ich mir einfach nur den Queltext anschauen kann um gewisse befehle zu verstehen. Vll kennt jemand eben so spezifische Seiten, die ein paar Befehle erklären. Ist ja klar, dass ich hier keinen mein Spiel machen lassen will. Weiß nur nicht, wie ich an die Sache rangehen soll, da ich grad mal die wichtigsten dinge wie Timer, Onklick ereignisse und sowas kann. Ich stell mir das numal ein wenig komplizierter vor, als ein timer da rein zubasteln, den ein paar mal an und aus zu stellen und feddisch ^^ soll ja auch am ende was bei rauskommen
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Di 11.10.05 20:05
Fangen wir mal so an: Du fragst nach Befehlen etc ... Nunja. Wieviel Ahnung hast Du schon von Delphi?
Alstar
|
|
Slaughter_house 
      
Beiträge: 16
|
Verfasst: Di 11.10.05 20:16
ok, ich poste moin alles, muss mir erst klare vorstellungen machen ^^ danke für deine hilfe 
|
|
DarkHunter
      
Beiträge: 477
Win XP
D3 Prof, D2005 PE
|
Verfasst: Di 11.10.05 21:14
Was verstehst du unter "Durch Klick Gegenstände fangen."?
Ich kann mir darunter irgendwie wenig vorstellen?
Sollen die Gegenstände irgendwie fallen?
Wenn ja:
- muss man sie Moorhuhnlike fangen?
- muss man eine Kanone/Netzwerfer ausrichten und im richtigen Moment bei richtigem Winkel ein Netz auf den Gegenstand schießen?
|
|
Slaughter_house 
      
Beiträge: 16
|
Verfasst: Fr 18.11.05 17:55
hat was länger gedauert, PC war schrott..
@Darkhunter es soll schon so ähnlich wie Moorhuhn sein die Objekte (insgesamt 2) sollen einfach an verschiedenen positionen ein- und ausgelblendet werden. Man soll sie eben "fangen" indem man drauf klickt und sie dadurch verschwinden. Nach einer gewissen zeit ist das Spiel vorbei und es wird ausgewertet.
Mein Problem fängt nun schon dabei an, dass wenn ich auf nen Button klicken will (z.B. "los gehts" oder so) sich die Figur/en trotz timer nicht von selbst im angegeben Interval bewegen. Ich klicke auf den Button --> Figur verschiebt sich nur einmal. Danach muss wieder auf den Button klicken damit sich die Figur bewegt. Ich will eben, dass sich die Figur durch anklicken z.B. 30 sec hin- und her bewegt... mein Quelltext: (ACHTUNG!! ANFÄNGER ^^)
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons;
type TForm1 = class(TForm) hg: TImage; Flocke: TImage; Button1: TBitBtn; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); begin button1.enabled:=true; timer1.enabled:=false; Randomize;
end;
procedure TForm1.Button1Click(Sender: TObject); begin
Flocke.Left := Random(ClientWidth -Flocke.Width ); Flocke.Top := Random(ClientHeight-Flocke.Height); timer1.enabled:=true; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin if timer1.enabled = false then begin timer1.enabled:=true; Flocke.Left := Random(ClientWidth -Flocke.Width ); Flocke.Top := Random(ClientHeight-Flocke.Height); timer1.interval:=6000;
end; end; end. |
Moderiert von raziel: Code- durch Delphi-Tags ersetzt
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 18.11.05 18:03
Kannst du mir bitte Sagen, was das darstellen soll?
Delphi-Quelltext 1: 2:
| if timer1.enabled = false then begin timer1.enabled:=true; |
Wenn der Timer nicht Enabled ist, dann wird auch nicht OnTimer aufgerufen.
Also ist das praktisch völlig unnötig. Ich seh da noch mehr unnötige Sachen.
Ich empfehle dir mal den Crashkurs von Christian anzugucken:
www.christian-stelzm...rials-crashkurs.html
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Slaughter_house 
      
Beiträge: 16
|
Verfasst: Fr 18.11.05 18:19
Weisst du denn nicht wie der code richtig lautet?
|
|
DarkHunter
      
Beiträge: 477
Win XP
D3 Prof, D2005 PE
|
Verfasst: Fr 18.11.05 18:49
Also ich hab deinen Code mal ein wenig angepasst an sich war das doch schon ganz in Ordnung
Slaughter_house hat folgendes geschrieben: | [..]
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons;
type TForm1 = class(TForm) hg: TImage; Flocke: TImage; Button1: TBitBtn; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); begin button1.enabled:=true; timer1.enabled:=false; timer1.interval:=6000; Randomize; end;
procedure TForm1.Button1Click(Sender: TObject); begin Flocke.Left := Random(form1.ClientWidth -Flocke.Width ); Flocke.Top := Random(form1.ClientHeight-Flocke.Height); timer1.enabled:=true; button1.visible := false; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Flocke.Left := Random(form1.ClientWidth -Flocke.Width ); Flocke.Top := Random(form1.ClientHeight-Flocke.Height); end;
end. |
|
_________________ I believe that every human has a finite number of heart-beats. I don't intend to waste any of mine running around doing exercises.
- Neil Armstrong
|
|
Slaughter_house 
      
Beiträge: 16
|
Verfasst: Fr 18.11.05 19:21
wow, vielen Dank hat mir sehr weitergeholfen.. naja von einem ins nächste Problem:
Bin jetzt so weit, dass wen man die Figuren anklickt, sie sich für den bestimmten Interval also z.B. für die angegeben 3 sekunden verschwinden und danach wieder sichtbar weiter "hüpfen". Jetzt frag ich mich, wie ich es anstelle, dass das Programm am ende eine Erfolgs- oder Misserfolgs Reaktion zeigen kann. Also Wenn das Spiel 1 Minute dauert und der Spieler 30 Figuren geklickt gekriegt hat, er eine gute Nachricht erhält. Wenn er jedoch nur 4 geklickt bekommen hat eine schlechte Nachricht. Also soll das Programm die "richtigen" klicks zählen
|
|
DarkHunter
      
Beiträge: 477
Win XP
D3 Prof, D2005 PE
|
Verfasst: Fr 18.11.05 19:37
Füge einfach eine globale Variable ein, in der du du die Klicks zählst.
In der OnClick-Prozedur zählst du diese dann hoch.
_________________ I believe that every human has a finite number of heart-beats. I don't intend to waste any of mine running around doing exercises.
- Neil Armstrong
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 18.11.05 19:46
Slaughter_house hat folgendes geschrieben: | | Weisst du denn nicht wie der code richtig lautet? |
Doch, aber ich ändere nicht jeden Source in einen korrekten Souce. Das mach ich je nach Laune.
Außerdem: 1 Frage pro Topic. Neue Frage, neues Topic.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Slaughter_house 
      
Beiträge: 16
|
Verfasst: Fr 18.11.05 19:51
ok, werd mich gleich dran machen.
Wie kann man denn nen sichtbaren zähler z.B. unten rechts in die Ecke setzen, die z.B. bis 0 runterzählt? erforderlich sind nur minuten+ sekunden
|
|
DarkHunter
      
Beiträge: 477
Win XP
D3 Prof, D2005 PE
|
Verfasst: Fr 18.11.05 20:19
Am simpelsten ist ein zweiter Timer mit Intervall 1000 und ein Label.
In das Label schreibst du die verbleibenden Sekunden, im dem OnTimer-Event zählst du die Sekunden um eins runter.
Gleichzeitig steht im OnTimerEvent eine Abfrage die checkt ob die Sekunden = 0 sind, dann werden alle Timer deaktiviert und das Ergebnis angezeigt.
_________________ I believe that every human has a finite number of heart-beats. I don't intend to waste any of mine running around doing exercises.
- Neil Armstrong
|
|
Slaughter_house 
      
Beiträge: 16
|
Verfasst: Sa 19.11.05 14:53
also dieses Label hab ich schon gefunden... nur wie lautet die Anweisung dafür, dass er dieses runterzählen anzeigt?
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 19.11.05 15:04
Moin!
Haste dir das schonmal angeguckt?
cu
Narses
|
|
Slaughter_house 
      
Beiträge: 16
|
Verfasst: Sa 19.11.05 15:38
jetzt weiß ich zwar, dass ich Schrift einfügen kann/muss .. aber immer noch nicht wie ich den Ticker da rein krieg. Er also von 3 minuten bis 0 sekunden runterzählt und das auch anzeigt
|
|
DarkHunter
      
Beiträge: 477
Win XP
D3 Prof, D2005 PE
|
Verfasst: Sa 19.11.05 17:30
3 Minuten = 180 Sekunden
Du zählst jetzt 180 Sekunden runter.
Dann musst du dich nur fragen wie du die Ausgabe machst, in Minuten/Sekunden oder nur Sekunden.
_________________ I believe that every human has a finite number of heart-beats. I don't intend to waste any of mine running around doing exercises.
- Neil Armstrong
|
|
Slaughter_house 
      
Beiträge: 16
|
Verfasst: Sa 19.11.05 17:34
genau das will ich ja auch nur wissen... mit dem zählen wirds schon irgendwie hinhauen... aber wie geb ich es jetzt bloß aus?
|
|