Autor Beitrag
Slaughter_house
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



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



BeitragVerfasst: Di 11.10.05 19:45 
Hallo und :welcome: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



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



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



BeitragVerfasst: Di 11.10.05 20:16 
ok, ich poste moin alles, muss mir erst klare vorstellungen machen ^^ danke für deine hilfe ;)
DarkHunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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 ^^)


ausblenden volle Höhe Delphi-Quelltext
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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 user profile iconraziel: Code- durch Delphi-Tags ersetzt
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 18.11.05 18:03 
Kannst du mir bitte Sagen, was das darstellen soll?
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 18.11.05 18:19 
Weisst du denn nicht wie der code richtig lautet?
DarkHunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: Fr 18.11.05 18:49 
Also ich hab deinen Code mal ein wenig angepasst an sich war das doch schon ganz in Ordnung

user profile iconSlaughter_house hat folgendes geschrieben:
[..]

ausblenden volle Höhe Delphi-Quelltext
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.FormCreate(Sender: TObject);
begin
 button1.enabled:=true;
 timer1.enabled:=false;
 timer1.interval:=6000; // Das Intervall gibt an wann das TimerEreignis ausgelöst werden soll (in ms), es ist sinnvoller das in das FormCreate zu setzten als in der OnTimer-Ereignis
 Randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Flocke.Left := Random(form1.ClientWidth -Flocke.Width ); //Du musst auch sagen welche Clientwidth/height
 Flocke.Top  := Random(form1.ClientHeight-Flocke.Height);
 timer1.enabled:=true;
 button1.visible := false; //Dann sieht man den Button nicht mehr
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
//Wenn du die If-Abfrage weglässt sollte es eigentlich gehen 
 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



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

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 18.11.05 19:46 
user profile iconSlaughter_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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



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

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 19.11.05 15:04 
Moin!

Haste dir das schonmal angeguckt? :wink:

cu
Narses
Slaughter_house Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



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

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



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