AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Kleines Problem mit Grundlagen // Minigame
Thema durchsuchen
Ansicht
Themen-Optionen

Kleines Problem mit Grundlagen // Minigame

Ein Thema von shillok · begonnen am 7. Jun 2011 · letzter Beitrag vom 8. Jun 2011
Antwort Antwort
shillok

Registriert seit: 7. Jun 2011
4 Beiträge
 
#1

AW: Kleines Problem mit Grundlagen // Minigame

  Alt 7. Jun 2011, 16:31
Danke schonmal für eure beiden schnellen Antworten.
@shmia: da steige ich leider komplett aus sorry!
Ich habe jetzt folgendes:
Delphi-Quellcode:
procedure TForm1.PunkteZaehlenSp1;
var MomentPunkteSp1 : Integer;
begin
                MomentPunkteSp1:=PunkteSpieler1;
                                if Panel_Zahl1.Caption=1
                                  then PunkteSpieler1:=Integer(MomentpunkteSp1+TrefferEinser);
                                if Panel_Zahl2.Caption=1
                                  then PunkteSpieler1:=Integer(MomentpunkteSp1+TrefferEinser);
                                if Panel_Zahl3.Caption=1
                                  then PunkteSpieler1:=Integer(MomentpunkteSp1+TrefferEinser);
                                if Panel_Zahl4.Caption=1
                                  then PunkteSpieler1:=Integer(MomentpunkteSp1+TrefferEinser);
                                if Panel_Zahl5.Caption=1
                                  then PunkteSpieler1:=Integer(MomentpunkteSp1+TrefferEinser);
                                if Panel_Zahl6.Caption=1
                                  then PunkteSpieler1:=Integer(MomentpunkteSp1+TrefferEinser);
Wobei TrefferEiner global als integer und bei FormCreat mit
        TrefferEinser:=100; angegeben ist.
PunkteSpieler1 soll die Variable sein die dann das Spiel über die Punkte anzeigt...
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#2

AW: Kleines Problem mit Grundlagen // Minigame

  Alt 7. Jun 2011, 17:04
Mal so hingeworfen, analog zu meinem vorherigen Post....
Wenn jemand einen (Denk)-Fehler sieht, schreien:

Delphi-Quellcode:

var
  TotalPoints : Integer = 0 ;
  Wuerfel : array[1..6] of Byte ;

procedure WuerfelnUndAuswerten();
var
  FPanel : TPanel ;
  FValue : Integer ;
  FPaschCount : Integer ;
  FStrassenCount : Integer ;
  FStrassenString : string ;
  i: Integer ;
begin

   // Erstmal würfeln
   TotalPoints := 0 ;
   Randomize() ;
   for i := Low(Wuerfel) to High(Wuerfel) do
   begin
      Wuerfel[i] := 0 ;
      FPanel := TPanel(FindComponent('Panel'+IntToStr(i))) ;
      FPanel.Caption := IntToStr(Random(6)+1) ;
   end;

   // Einzelne Punkte für Augen auswerten und Anzahl gleicher Würfel erhöhen
   for i := Low(Wuerfel) to High(Wuerfel) do
   begin
      FPanel := TPanel(FindComponent('Panel'+IntToStr(i))) ;
      FValue := StrToInt(FPanel.Caption) ;

      // Würfel-Array-Index für den gewürfelten Wert erhöhen
      Inc(Wuerfel[FValue]) ;

      // Punkte für 1 und 5 hinzufügen
      case FValue of
         1: TotalPoints := TotalPoints + 100 ;
         5: TotalPoints := TotalPoints + 50 ;
      end;
   end;

   // Auswertung von 3er-Päschen und Strassen
   FStrassenCount := 0 ;
   FPaschCount := 0 ;
   for i := Low(Wuerfel) to High(Wuerfel) do
   begin

     // 3er-Päsche auswerten und Puntke hinzufügen
     // ((Anzahl Würfel div 3) * Augenzahl) * 100
     FValue := (((Wuerfel[i] div 3) * i) * 100) ;
     TotalPoints := TotalPoints + FValue ;
     if (FValue > 0) then FPaschCount := FPaschCount + (Wuerfel[i] div 3);

     // Wenn der Wert > 0 ist, den "Strassenzähler" eins hochsetzen, ansonsten annullieren
     if (Wuerfel[i] = 0) then
       FStrassenCount := 0
     else
       Inc(FStrassenCount) ;

   end;

   // Strassen / Kniffel auswerten
   case FStrassenCount of

     4:
     begin
       FStrassenString := 'kleine Strasse' ;
       TotalPoints := TotalPoints + 2000 ;
     end;

     5:
     begin
       FStrassenString := 'grosse Strasse' ;
       TotalPoints := TotalPoints + 2000 ;
     end;
     
     6:
     begin
       FStrassenString := 'Kniffel!' ;
     end;

     else
        FStrassenString := 'keine' ;

   end;

   Label1.Caption := 'Punkte: ' + IntToStr(TotalPoints) ;
   Label2.Caption := 'Anzahl 3er-Päsche: ' + IntToStr(FPaschCount) ;
   Label3.Caption := 'Strasse: ' + FStrassenString ;
end;
Natürlich kann man das im späteren Verlauf eleganter machen, ohne Panel-Caption-Umwandlungen, also dass du zuerst rein rechnerisch würfelst und dann erst am Schluss das ganze in die GUI jagst, aber das ist dir überlassen
Soll ja erstmal nur ein Denkanstoss sein und ich bin von deinem Ausgangspunkt ausgegangen: 6 Zahlen als Captions auf den Panels


Edit: Projekt angehängt
Angehängte Dateien
Dateityp: zip wuerfeln.zip (267,8 KB, 2x aufgerufen)

Geändert von blackfin ( 7. Jun 2011 um 17:25 Uhr)
  Mit Zitat antworten Zitat
shillok

Registriert seit: 7. Jun 2011
4 Beiträge
 
#3

AW: Kleines Problem mit Grundlagen // Minigame

  Alt 7. Jun 2011, 17:15
wow das ist der hammer!
mit deinen Kommentaren verstehe ichs auch! mega geil. Ich muss es etwas umschreiben aber ich glaube das ist es! Mega geil! Tausend Dank!
Ich melde mich dann wenns soweit ist.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: Kleines Problem mit Grundlagen // Minigame

  Alt 7. Jun 2011, 17:24
Hmm, man kann es richtig machen oder falsch.
Richtig wäre: das Array mit den 6 Zahlen ist "der Chef" und die Panels sind nur die Anzeige.
Ich mein' das kann doch nicht so schwer zu verstehen sein.
Falsch wäre, den Paneln die zufälligen Zahlen zuzuweisen und dann später wieder von dort auszulesen.

Hier nochmal das Kochbuch:
1.) array mit 6 zufälligen Zahlen befüllen
2.) die Werte in dem array auf die Panels kopieren (Visualisierung)
3.) arrays auswerten und schauen wieviele DreierPasch enthalten sind
4.) Prüfen ob eine Strasse in dem Array steckt
5.) Punktezahl errechnen und anzeigen
Andreas
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#5

AW: Kleines Problem mit Grundlagen // Minigame

  Alt 7. Jun 2011, 17:27
Self-Quote:
Zitat:
Natürlich kann man das im späteren Verlauf eleganter machen, ohne Panel-Caption-Umwandlungen, also dass du zuerst rein rechnerisch würfelst und dann erst am Schluss das ganze in die GUI jagst, aber das ist dir überlassen
Soll ja erstmal nur ein Denkanstoss sein und ich bin von deinem Ausgangspunkt ausgegangen: 6 Zahlen als Captions auf den Panels
  Mit Zitat antworten Zitat
shillok

Registriert seit: 7. Jun 2011
4 Beiträge
 
#6

AW: Kleines Problem mit Grundlagen // Minigame

  Alt 7. Jun 2011, 18:34
So, nächstes Problem:
Man darf 3mal werfen und man kann mit hilfe von checkboxen wählen welche zahlen man stehen lässt und welche man nochmal werfen möchte. wie könnte ich das einbinden?
der rest sieht bis jetzt sehr gut aus.
danke nochmal
  Mit Zitat antworten Zitat
hans ditter

Registriert seit: 25. Jun 2010
Ort: Niedersachsen
263 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Kleines Problem mit Grundlagen // Minigame

  Alt 7. Jun 2011, 18:44
du musst einfach abfragen, ob die Checkbox unter deiner Zahl angeklickt ist oder nicht. In etwa so:
Delphi-Quellcode:
if NOT(Checkbox1.Checked) then
  Panel1.Caption := random(6) + 1;
if NOT(Checkbox2.Checked) then
  Panel2.Caption := random(6) + 1;
Wenn du dann nur dreimal Würfeln erlauben willst, dann kannst du vorher noch eine if-Abfrage einbauen, die den Zustand einer Zählvariable prüft:
Delphi-Quellcode:
var WurfCount: Integer;

begin
  if WurfCount < 3 then
  begin
    //hier die Zufallszahlen
    Inc(WurfCount);
  end
  else
  begin
    WurfCount := 0;
    Break;
  end;
end;
Wenn dann schon dreimal gewürfelt wurde, wird die Prozedur/Funktion abgebrochen, sonst eben nicht.

LG; hans ditter
RudiRüsselSeineSocketKomponente - SirRufo (--> Chat mit PM)

Delphi Programming is the best one!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Kleines Problem mit Grundlagen // Minigame

  Alt 8. Jun 2011, 10:17
Hmm, man kann es richtig machen oder falsch.
Richtig wäre: das Array mit den 6 Zahlen ist "der Chef" und die Panels sind nur die Anzeige.
Ich mein' das kann doch nicht so schwer zu verstehen sein.
Falsch wäre, den Paneln die zufälligen Zahlen zuzuweisen und dann später wieder von dort auszulesen.

Hier nochmal das Kochbuch:
1.) array mit 6 zufälligen Zahlen befüllen
2.) die Werte in dem array auf die Panels kopieren (Visualisierung)
3.) arrays auswerten und schauen wieviele DreierPasch enthalten sind
4.) Prüfen ob eine Strasse in dem Array steckt
5.) Punktezahl errechnen und anzeigen
Recht hast Du!
Aber ich kann shillok gut verstehen, da "Programmieren" sich heute oft mit der Darstellung von irgendetwas und nicht mit der Verarbeitung von irgendetwas beschäftigt.


Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 14:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz