AGB  ·  Datenschutz  ·  Impressum  







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

Problem beim Punktezählen

Ein Thema von Wolverine · begonnen am 8. Jul 2003 · letzter Beitrag vom 17. Jul 2003
Antwort Antwort
Wolverine

Registriert seit: 30. Mai 2003
Ort: Düsseldorf (NRW)
109 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem beim Punktezählen

  Alt 8. Jul 2003, 19:11
Tach zusammen.
Wieder mal ein Prob.
Ich will den Wert einer Variablen bei einem bestimmten Ereigniss, Form1.Visible=True, immer um 1 erhöhen.
Das Problem ist, wenn das Formular 4 mal angezeigt wird, ändert sich der Wert trotzdem nur um 1, er sollte sich dann aber um z.B. 4 erhöhen!!!

Quellcode lautet:

Delphi-Quellcode:
if (Form1.Visible=True) then
begin
   scorespieler1 := scorespieler1 + 1;
   Form4.Label1.Caption:='Score von Spieler 1= '+IntToStr(scorespieler1);
 end;
Ist der Code so richtig oder fehlt etwas???
Was muss ich, wenn was fehlt, wie ändern???
Bräuchte die Lösung wiedermal schnell aber das ist hier ja Standard
Guido L.
The nice thing about Windows is - It does not just crash, it displays a dialog box and lets you press 'OK' first.
Guten Rutsch und Start ins neue Jahr 2005
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Problem beim Punktezählen

  Alt 8. Jul 2003, 19:14
Besser wäre vielleicht:
Delphi-Quellcode:
Inc(scorespieler1);
Form4.Refresh;


MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Wolverine

Registriert seit: 30. Mai 2003
Ort: Düsseldorf (NRW)
109 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Problem beim Punktezählen

  Alt 8. Jul 2003, 19:18
Hi flomei.
Deine Antwort ist zwar gut und schön aber leider hilft sie mir nicht weiter!
Dann wird das Programm noch nicht mal compiliert und folgende Fehlermeldung kommt:
[Fehler] Unit3.pas(105): Inkompatible Typen: 'String' und 'procedure, untyped pointer or untyped parameter'

Was´n nu schon wieder los *nixcheck
Guido L.
The nice thing about Windows is - It does not just crash, it displays a dialog box and lets you press 'OK' first.
Guten Rutsch und Start ins neue Jahr 2005
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#4

Re: Problem beim Punktezählen

  Alt 8. Jul 2003, 19:18
Hallo,
Zitat von Wolverine:
if (Form1.Visible=True) then
if Form1.Visible then und
Inc(Spieler1); würde auch reichen.

Ich welcher Prozedur wird denn das ganze aufgerufen?

Grüsse, Daniel
  Mit Zitat antworten Zitat
Wolverine

Registriert seit: 30. Mai 2003
Ort: Düsseldorf (NRW)
109 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Problem beim Punktezählen

  Alt 8. Jul 2003, 19:22
Der ganze Stuff wird in einer Timerprozedur aufgerufen.
Wo soll ich denn das "Inc(Spieler1)" hinsetzen???
Guido L.
The nice thing about Windows is - It does not just crash, it displays a dialog box and lets you press 'OK' first.
Guten Rutsch und Start ins neue Jahr 2005
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#6

Re: Problem beim Punktezählen

  Alt 8. Jul 2003, 19:25
Zitat von Wolverine:
Wo soll ich denn das "Inc(Spieler1)" hinsetzen???
scorespieler1 := scorespieler1 + 1; Entspricht auch:
Inc(ScoreSpieler1); Hmm, Timer, ist so ne sache...
Mach irgendwo eine globale Integervariable, meintwegen auf Form1. Auf die kannst Du von jeder Unit zugreifen! Und im OnShow von Form4, zählst Du nur noch die Var hoch. Mach mMn. viel mehr Sinn als ständig mit nem Timer zu prüfen...

Grüsse, Daniel
  Mit Zitat antworten Zitat
Wolverine

Registriert seit: 30. Mai 2003
Ort: Düsseldorf (NRW)
109 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Problem beim Punktezählen

  Alt 8. Jul 2003, 19:31
Das mit der Globalen variablen geht nun leider nicht mehr.

und das "Inc(scorespieler1)" anstelle von "scorespieler1:=scorespieler1+1" ???

Na gut ich probier es aus und sag dann ob es funzt!!!
Guido L.
The nice thing about Windows is - It does not just crash, it displays a dialog box and lets you press 'OK' first.
Guten Rutsch und Start ins neue Jahr 2005
  Mit Zitat antworten Zitat
Wolverine

Registriert seit: 30. Mai 2003
Ort: Düsseldorf (NRW)
109 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Problem beim Punktezählen

  Alt 8. Jul 2003, 19:52
Leider klappt es immer noch nicht so ganz.
Ich glaub ich hau mal den kompletten Code aus der Unit hier rein ^^.
Könnte etwas lang werden aber macht nix!!!

Delphi-Quellcode:
unit Unit3;

interface

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

type
  TForm3 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    procedure Timer1Timer(Sender: TObject);
    procedure FormShow(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;
  counter: byte;
  scorespieler1, scorespieler2: integer;



implementation

uses Movement, Unit2, Unit4;

{$R *.dfm}

procedure TForm3.Timer1Timer(Sender: TObject);
begin
dec(counter);
Button1.Caption:='Noch '+IntToStr(counter)+' Sekunden';



if (counter=0)
and (Form1.Visible=True)
or (counter=0)
and (Form2.Visible=True)
then
 begin
  Timer1.Enabled:=False;
  counter:=0;
  Form1.Visible:=False;
  Form2.Visible:=False;
  Form4.Visible:=True;
  //Application.Terminate;
 end;

{Diese Bedingung ruft Form 2 auf, versteckt Form1 und Deaktiviert den Timer
wenn der Zähler =0 UND Form1 sichtbar ist -> Start des Spiels}

if (counter=0)
and (Form1.Visible=True)
then
 begin
  Timer1.Enabled:=false;
  Form2.Visible:=true;
  Form1.Visible:=False;
 end;

{Aktiviert den Timer und setzt den Zähler auf 30, wenn Form2 sichtbar, der Timer
deaktiviert UND der Zähler =0 ist}

if (Form2.Visible=True)
and (Timer1.Enabled=false)
and (Counter = 0)
then
 begin
  Timer1.Enabled:=True;
  counter := 30;
 end;

{Hier werden der Timer deaktiviert, Form1 sichtbar und Form2 versteckt, wenn
Form2 sichtbar, der Zähler =0 UND Form1 versteckt ist}

if (Form2.Visible=True)
and (Counter = 0)
and (Form1.Visible=False)
then
 begin
  Timer1.Enabled:=false;
  Form1.Visible:=true;
  Form2.Visible:=false;
 end;

{Timer wird aktiviert und der Zähler auf 30 gesetzt, wenn Form2 versteckt, Form1
sichtbar UND der Zähler =0 ist}

if (Form2.Visible=false)
and (Form1.Visible=true)
and (counter=0)
then
 begin
   Timer1.Enabled:=True;
   Counter:=30;
 end;

if Form1.Visible then
begin
Inc(scorespieler1);
Form4.Label1.Caption:='Score von Spieler 1= '+IntToStr(scorespieler1);
end;

end;


procedure TForm3.FormShow(Sender: TObject);
begin


if
    (Form1.Kugelrot.Left=40)
  and
    (Form1.Kugelrot.Top=40)
  and
    (Form1.Kugeblau.Left=480)
  and
    (Form1.Kugeblau.Top=296)
  then
begin
counter:=30;
end;
if
    (Form2.Kugelrot.Left=40)
  and
    (Form2.Kugelrot.Top=40)
  and
    (Form2.Kugeblau.Left=480)
  and
    (Form2.Kugeblau.Top=296)
  then
begin
counter:=30;
end;
end;

end.
So, nun viel Spass beim Code zerpflücken, aber nich zu dolle ich brauch den noch !!!
Hoffe damit könnt Ihr mir jetzt aber richtig helfen.
Guido L.
The nice thing about Windows is - It does not just crash, it displays a dialog box and lets you press 'OK' first.
Guten Rutsch und Start ins neue Jahr 2005
  Mit Zitat antworten Zitat
Blizzard

Registriert seit: 4. Jan 2003
88 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Problem beim Punktezählen

  Alt 16. Jul 2003, 13:58
mit nem timer wird das wohl, wenn ich dich richtig verstehe, ned funktionieren.
ich würd mal versuchen das inc(scorespieler1) in die onshow oder onactivate prozedur von form1 zu stellen

also so oder so ähnlich
Delphi-Quellcode:
procedure tform1.form1activate(sender: Tobject);
begin
 if form3.timer.enabled then inc(scorespieler1);
end;
blizzard
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Problem beim Punktezählen

  Alt 17. Jul 2003, 08:03
Hallo Blizzard,

mir ist folgendes augefallen:

Delphi-Quellcode:
if (counter=0)
and (Form1.Visible=True)
or (counter=0)
and (Form2.Visible=True)
ist m.E. falsch geklammert. Es müsste so aussehen:
Delphi-Quellcode:
if ((counter=0)
and (Form1.Visible=True))
or ((counter=0)
and (Form2.Visible=True))
liegt es vielleicht daran, dass der entsprechende then Teil deshalb nie ausgeführt wird?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:26 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