Seite 2 von 2 ErsteErste 12
Ergebnis 21 bis 30 von 30

Thema: [Programmvorstellung] ~FM 4.1~

  1. #21
    Ich hab mir weder das Spiel heruntergeladen, noch mir großartig Gedanken gemacht (ja, ich weiß, ich bin schlimm - aber ich mag einfach keinen Fußball und hab auch nicht wirklich Zeit ^^), bloß ist mir aufgefallen, wieso deine Schriftart oben über die Fahne gehen könnte. Die anderen, auf deren Computern das Spiel ausgeführt wird, scheinen einfach die Schriftart nicht zu besitzen, die du für die Überschrift eingestellt hast, weswegen automatisch eine Standardschriftart eingesetzt wird, die breiter ist - und den Text rüberragen lässt.

  2. #22
    das ist ziemlich benutzer unfreundlich. du brauchst doch nur ein paar werte in eine datei zu schreiben, und die wieder einzulesen, das ist ned sonderlich schwer, würde dem spiel aber viel benutzercomfort verleihen o.O

  3. #23
    Zitat Zitat von P-Games Beitrag anzeigen
    Ja also das Projekt besteht aus mehreren Forms (und Units dementsprechend). Speichern kann man es überhaupt nicht. Es ist eben ein ausführendes Programm, dessen "Spielaufgabe" in einem gelöst werden muss. Danach beedet man alles.
    Versuchs mal mit OOP, damit dürftest du dein Projekt übersichtlicher halten können. Dafür legst du einfach neue Units an (ohne Formular!) und definierst dort Klassen für alle möglichen Objekte. Hier beispielsweise ein Auszug aus der Unit "Football.pas" eines meiner Projekte (Football = American Football).

    Code:
    unit Football;
    
    interface
    
    uses
      SysUtils, Classes;
    
    type
      TFieldSide = (fsTeam1,   fsTeam2,   fs50Yard);
      TWeather   = (weSunny,   weRain,    weHot);
      TBallOwner = (boTeam1,   boTeam2);
      TGameState = (gsPlaying, gsKickOff, gsPunt);
    
      TFootballGame = Class
        private
          fgLogStrings: TStrings;
          fgTeam1Name : String;
          fgTeam2Name : String;
          // --------------------
          fgBallOnYard: Integer;
          fgBallOnSide: TFieldSide;
          fgBallOwner : TBallOwner;
          fgPlay      : Integer;
          fgGameState : TGameState;
          // --------------------
          fgWeather: TWeather;
          // ####################
          procedure AddToLog(S: String);
          procedure PrintStatus;
        public
          constructor Create(Log: TStrings);
          destructor Free;
          procedure Toss;
          [...]
          // ####################
          property Team1: String read fgTeam1Name write fgTeam1Name;
          property Team2: String read fgTeam2Name write fgTeam2Name;
      end;
    
    implementation
    
    constructor TFootballGame.Create(Log: TStrings);
    begin
      fgLogStrings := Log;
      fgBallOnSide := fs50Yard;
      fgBallOnYard := 50;
    
      // Calculate Weather
      case (Random(11)) of
        0..6  : fgWeather := weSunny; // 60% Sunny
        7..8  : fgWeather := weHot;   // 20% Hot
        9..10 : fgWeather := weRain;  // 20% Rain
      end;
      [...]
    end;
    
    destructor TFootballGame.Free;
    begin
      AddToLog('And off we go...');
    end;
    
    procedure TFootballGame.Toss;
    begin
      AddToLog('Well I guess it''s time for a toss.');
      case Random(2) of
        0: begin
             fgBallOwner  := boTeam1;
             fgBallOnSide := fsTeam1;
             fgBallOnYard := 20;      // Just always place it on 20
             AddToLog('The ' + fgTeam1Name + ' are kicking.');
           end;
        1: begin
             fgBallOwner  := boTeam2;
             fgBallOnSide := fsTeam2;
             fgBallOnYard := 20;      // Just always place it on 20
             AddToLog('The ' + fgTeam2Name + ' are kicking.');
           end;
      end;
      fgPlay := 1;
      fgGameState := gsKickOff;
      PrintStatus();
    end;
    
    procedure TFootballGame.PrintStatus;
    var
      BallSide: String;
    begin
      case fgBallOnSide of
        fsTeam1 : BallSide := fgTeam1Name + ' ' + IntToStr(fgBallOnYard);
        fsTeam2 : BallSide := fgTeam2Name + ' ' + IntToStr(fgBallOnYard);
        fs50Yard: BallSide := 'the 50 Yard Line'
      end;
      AddToLog('');
      AddToLog('----------------------------------------');
      AddToLog('Ball''s on ' + BallSide);
      AddToLog('----------------------------------------');
      if fgGameState = gsPlaying then
        case fgBallOwner of
          boTeam1: AddToLog(fgTeam1Name + ' ' + IntToStr(fgPlay));
          boTeam2: AddToLog(fgTeam2Name + ' ' + IntToStr(fgPlay));
        end;
    end;
    
    procedure TFootballGame.AddToLog(S: String);
    begin
      fgLogStrings.Add(S);
    end;
    
    [...]
    
    end.
    Dann bindest du das ganze in deinem Formular per uses ein und kannst dann bequem die Klasse wie jede andere nutzen. Also bei mir z.B.

    Code:
    var
      Football: TFootballGame;
    begin
      Frame1.Visible := False;
      Frame2.Visible := True;
      try
        Football := TFootballGame.Create(Log.Lines);
        Football.Team1 := Team1.Text;
        Football.Team2 := Team2.Text;
        Football.Toss;
      finally
        Football.Free;
      end;
    Wenn du das für Spieler, Teams und das Spiel an sich jeweils einzeln regelst und die Daten für Teams etc. aus ini/xml ausliest (nicht im Code festlegst) ist das Spiel schonmal viel dynamischer zu meistern.

  4. #24
    Wegen der Schrift: jeder PC hat Arial.

  5. #25
    Vielleicht jeder Windows PC Aber gut, nachdem dein Programm eh nur für Windows ist, sollte das kein Hindernis darstellen.

  6. #26
    Auch wenn's komisch aussieht: Es heisst "FUSSBALL" und nicht FUßBALL.

  7. #27
    Zitat Zitat von jensma Beitrag anzeigen
    Auch wenn's komisch aussieht: Es heisst "FUSSBALL" und nicht FUßBALL.
    Nope. Fußball ist auch korrekt.

    edit: damn, ich dachte er würde auf die lustigen FIFA-Regelungen anspielen. klar, jens hat Recht.

    Geändert von WeTa (04.10.2007 um 08:51 Uhr)

  8. #28
    Zitat Zitat von Wetako Beitrag anzeigen
    Nope. Fußball ist auch korrekt.
    Nein, Jensma hat schon recht. Wenn man komplett in Versalien (Großbuchstaben) schreibt, wird das Eszett durch zwei S ersetzt.
    Ansonsten heißt es aber IMMER Fußball. Und nicht Fussball. Auch nach der Rechtschreibreform nicht.

    Wieder schlauer geworden.

  9. #29
    Zitat Zitat von The_Best_Isaac Beitrag anzeigen
    Nein, Jensma hat schon recht. Wenn man komplett in Versalien (Großbuchstaben) schreibt, wird das Eszett durch zwei S ersetzt.
    Ansonsten heißt es aber IMMER Fußball. Und nicht Fussball. Auch nach der Rechtschreibreform nicht.

    Wieder schlauer geworden.
    Also, bei uns in der Schweiz gibt es das Eszett zum Glück nicht.

  10. #30
    Um nochmal auf das Thema zu kommen:
    Fussball schreibe ich also mit zwei s - gut. Ich habe allerdings gemerkt, dass ein Programm aus bunten Panels und Feldern nichts im Vergleich zu einem schönen Programm mit Windowsoberfläche ist - also Buttons, etc. Ich werde wohl lieber einen Fussballmanager erstellen, in dem man nur seine eigene Mannschaft haben kann, das ist auch sehr beliebt. Da ich jetzt ein Jahr älter bin als bei meinem letzten großen Programm und wieder Informatik habe, lerne ich dazu und kann ein mittelgroßes, ordentliches Fussballprogramm schreiben. Und dank MMX gibt es Leute, die mich auf Fehler etc. hinweisen. Sehr schön.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •