AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

random befehl funktoniert nicht

Ein Thema von Coxy · begonnen am 27. Mär 2011 · letzter Beitrag vom 19. Apr 2011
Antwort Antwort
Seite 1 von 2  1 2      
Coxy

Registriert seit: 27. Mär 2011
28 Beiträge
 
#1

random befehl funktoniert nicht

  Alt 27. Mär 2011, 18:02
Delphi-Version: 6
Hallo zusammen,
Wir sollen für die Schule ein Spiel mit Delphi erstellen (als Projekt). Leider komme ich gerade nicht weiter: ich bekomme meinen random Befehl nicht zum laufen und bräuchte Hilfe. (In der Letzten Zeile ist der Befehl).

Delphi-Quellcode:
vunit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    SHP_BALL: TShape;
    Timer_Ball: TTimer;
    img_Boese: TImage;
    Timer_Boese: TTimer;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Timer_BallTimer(Sender: TObject);
    procedure Timer_BoeseTimer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
 var
hoch, runter, links, rechts, richtung, zahl :integer;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

if key = vk_up then hoch:= 1;
if key = vk_down then runter:= 1;
if key = vk_left then links:= 1;
if key = vk_right then rechts:= 1;

end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

if key = vk_up then hoch:= 0;
if key = vk_down then runter:=0;
if key = vk_left then links :=0;
if key = vk_right then rechts :=0;
end;

procedure TForm1.Timer_BallTimer(Sender: TObject);
begin
if (hoch = 1) and (shp_ball.Top - 6 > 0) then shp_ball.Top := shp_ball.Top -5;
if (runter = 1) and (shp_ball.Top + shp_ball.Height + 35 < form1.Height) then shp_ball.Top := shp_ball.Top +5;
if (links = 1) and (shp_ball.Left + 5 > 0) then shp_ball.Left := shp_ball.Left -5;
if (rechts = 1) and (shp_ball.Left + shp_ball.Width + 12 < form1.Width) then shp_ball.Left := shp_ball.Left +5;

if (hoch = 1) and (shp_ball.Height > 100) then shp_ball.height := shp_ball.height - 1;

if runter = 1 then shp_ball.Brush.Color := clRed;




end;

procedure TForm1.Timer_BoeseTimer(Sender: TObject);
begin

If (richtung=1) and (img_Boese.Top + img_Boese.Height + 30 > form1.Height) then richtung :=2;
If (richtung=2) and (img_Boese.Left + img_Boese.Width + 30 > form1.Width) then richtung :=3;
If (richtung=3) and (img_Boese.Top < 10) then richtung := 4;
If (richtung=1) and (img_Boese.Left < 10) then richtung :=1;

If (richtung=2) and (img_Boese.Top < 1) then richtung :=1;
If (richtung=1) and (img_Boese.Left + img_Boese.Width + 30 > form1.Width) then richtung :=4;
If (richtung=4) and (img_Boese.Top + img_Boese.Height + 30 > form1.Height) then richtung := 3;
If (richtung=3) and (img_Boese.Left < 10) then richtung :=2;

case richtung of
1: Begin
img_Boese.Top := img_Boese.Top + 1;
img_Boese.Left := img_Boese.Left + 1;
end;

2: Begin
img_Boese.Top := img_Boese.Top - 1;
img_Boese.Left := img_Boese.Left + 1;
end;

3: Begin
img_Boese.Top := img_Boese.Top - 1;
img_Boese.Left := img_Boese.Left - 1;
end;

4: Begin
img_Boese.Top := img_Boese.Top + 1;
img_Boese.Left := img_Boese.Left - 1;
end;
end;

if (richtung=1) then zahl:=random(1);

if (zahl=1) then img_Boese.Visible := false;



end;

PS: Gibt es eigentlich eine gute Seite mit der man lernen kann Delphi spiele zu programmieren (z.B Kollisionen zwischen figuren usw.)

Grüße

Geändert von Matze (27. Mär 2011 um 20:43 Uhr) Grund: [quote]- durch [delphi]-Tags ersetzt. MfG Matze
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

AW: random befehl funktoniert nicht

  Alt 27. Mär 2011, 18:07
Mach mal:
if (richtung=1) then zahl:=random(2); Dann kommen Zahlen zwischen 0 und 1


...und eine Bitte, verwende für Quelltext bitte Delphi-Tags.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: random befehl funktoniert nicht

  Alt 27. Mär 2011, 18:13
EDIT: Auch wenn turboPASCAL vermutlich richtig liegt, schick ich das mal ab, als Hinweis für eventuell folgende Fragen.


Zitat:
ich bekomme meinen random Befehl nicht zum laufen
Könntest du genauer erläutern, was du damit meinst (eventuelle Fehlermeldung, was ist falsch, usw.)?

Und: Zitat-Tags sind schon eine gute Idee, Delphi-Tags (der Helm im Editor) wären die bessere Wahl.
Code:
[DELPHI][/DELPHI]
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

AW: random befehl funktoniert nicht

  Alt 27. Mär 2011, 19:14
Und rufe einmal in irgendeinem Init-Teil die Ramdonize -Funktion auf.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: random befehl funktoniert nicht

  Alt 27. Mär 2011, 19:27
@Bernhard: Buchstabendreher, Du meinst Randomize
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Coxy

Registriert seit: 27. Mär 2011
28 Beiträge
 
#6

AW: random befehl funktoniert nicht

  Alt 27. Mär 2011, 19:36
danke erst einmal,
also ich habe einfach random(2) gemacht und jetzt wird er unsichtbar (vorher ist einfach nichts passiert) wenn die Figur sich nach rechts bewegt, nur leider dachte ich das er erneut würfelt und er nach einer Zeit wieder sichtbar wird? Das passiert jedoch nicht, wieso?
Außerdem wollte ich fragen ob ihr eine gute Seite kennt dir mir helfen kann ein Spiel zu erstellen (ich hab keine Ahnung wie ich das mit der Kollision der Figuren später machen soll)
Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#7

AW: random befehl funktoniert nicht

  Alt 27. Mär 2011, 19:40
Am besten Doppelklöick auf das Formular und dann in der Prozedur OnFormCreate das Randomize eintragen.
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

AW: random befehl funktoniert nicht

  Alt 27. Mär 2011, 19:51
danke erst einmal,
also ich habe einfach random(2) gemacht und jetzt wird er unsichtbar (vorher ist einfach nichts passiert) wenn die Figur sich nach rechts bewegt, nur leider dachte ich das er erneut würfelt und er nach einer Zeit wieder sichtbar wird? Das passiert jedoch nicht, wieso?
Da hast Code zum unsichtbar (if (zahl=1) then img_Boese.Visible := false; ) machen, aber keinen zum sichtbar machen.
Umschalten könntest du zB. so:
Delphi-Quellcode:
// Verneine die aktuelle Sichtbarkeit:
if (zahl=1) then img_Boese.Visible := not img_Boese.Visible;
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

AW: random befehl funktoniert nicht

  Alt 27. Mär 2011, 22:45
Am besten Doppelklöick auf das Formular und dann in der Prozedur OnFormCreate das Randomize eintragen.
Warum am besten?

Randomize zum Programmstart kann man ebensogut in den initialization-Teil der Unit 1 oder in das Hauptprogramm (dpr-Datei) einfügen. Könnte ein Unterprogramm (nämlich das oncreate-ausgelöste) sparen.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#10

AW: random befehl funktoniert nicht

  Alt 28. Mär 2011, 09:13
Ganz einfach: Nicht-Experten könnte man damit überfordern, dass man irgendwelche neuen Bereiche (init./fini.) einführt. Da das Hauptformular sowieso erzeugt wird und das am Anfang passiert, ist es egal, ob das Randomize (ja, war vorher ein Buchstabendreher) dort oder sonstwo aufgerufen wird.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz