Banner left   Banner center   Banner right

Germanenglish Home · News · Diary · Screenshots · Documentation (Wiki) · Downloads · Guestbook · Forum

Home · Benutzer registrieren · Suchen · Statistik · FAQ · Benutzerliste

Zur Zeit online: keiner ausser dir

 X-Force - Fight For Destiny - Forum —› X-Skript / Developer-Pack —› Lösungsvorschlag Aufgabe Kap5

Autor Mitteilung
verfasst am: 02.06.2009, 19:11
Registrierdatum: 24.07.2007, 10:19

 Beiträge: 71
Hier mal mein Lösungsvorschlag für Kap 5 (hab aufg 3 mit case gelöst)

Für Kap3
program UFOJagd;

const
{$IFDEF DEUTSCH}
  {$DEFINE CONSTOK}
  MissionText  = '...';

  MissionWin = '...';

  MissionLose = '...';

  abschuss = 'wurde abgeschossen.';
  
  bezeichnung = ' der Jägerstaffel';
  
  Missname = 'UFO-Angriff';
{$ENDIF}

{$IFDEF ENGLISH}  //Englisch
  {$DEFINE CONSTOK}
  MissionText = '...';
  
  MissionWin = '...';

  MissionLose = '...';

  abschuss = 'are destroyed.';

  bezeichnung = '...';

  Missname = 'UFO-Attack';
{$ENDIF}

{$IFNDEF CONSTOK}  //... wär hier das vom Englischen
  MissionText = 'Sorry, your language isn''t supported yet, so this text go on in English.'
+ '...';
  
  MissionWin = '...';

  MissionLose = '...';

  abschuss = 'are destroyed.';

  bezeichnung = '...';

  Missname = 'UFO-Attack';
{$ENDIF}

....
abschuss, bezeichnung, Missname eingeführt, das man die begriffe ins englische/andere Sprache übersetzen kann so nun Kap4
program Quiz;
const  
  EinleitungDE = 'Herzlich willkommen zu unserer kleinen '
             + '<yellow>Sp<bluebold>iel<green>show!<white>.'
             + #13#10#13#10
             + 'Wenn du dich gut schlägst, wirst du reich belohnt werden.';

  ... //die anderen dann auch mit DE erweitern
  
  EinleitungEng='Sorry, English isn''t supported yet';

var
  Land : Integer;            //Ländervariable: 1= Deutsch, 2=Englisch, 3=etc. etc., 4=pp
  abbr : Integer;            //Für abbruch des Spieles

...

procedure StartMission;
var Sprachent : TStringList;   //Nur wichtig, falls Sprache nicht vorhanden ist
begin
  Land:=0;
  abbr:=1;
  {$IFDEF DEUTSCH}     //Deutsche Sprache
  Land:=1;
  {$ENDIF}

  {$IFDEF ENGLISH}     //Englische Sprache     für Aufgabe 1
  Land:=2;
  {$ENDIF}

  if (Land=0) then    //Falls die derzeitige Sprache noch nicht einbezogen wurde
  begin
  game_api_messageBox('Sorry, your language isn''t supported yet');
  
  game_api_messageBox('Do you want to quit this game?');  //Aufgabe 2
  Sprachent:=TStringList.Create;
  Sprachent.Add('Yes');
  Sprachent.Add('No');
  abbr := game_api_ChooseItemBox('Quit?',Sprachent);
  Sprachent.Free;
  if not (abbr=0) then                          //wird nur Fortgesetzt wenn er nicht aufhört
  begin
    game_api_messageBox('Which Language do you want to play this game in?');  //Aufgabe 3
    Sprachent:=TStringList.Create;
    Sprachent.Add('Deutsch');         //man könnte auch hier das mit abbruch reinbringen als 0te antwort, wollt aber Aufgabe 2 und 3 trennen
    Sprachent.Add('English');
    Sprachent.Add('etc. etc.');  //etc. etc. und pp nur bsp. für andere sprachen
    Sprachent.Add('pp');
    Land := game_api_ChooseItemBox('Language?',Sprachent)+1;
    Sprachent.Free;
  end;
  end;
  
  if (Land=0) then abbr:=0;           //Fängt fehler ab, fals der spieler auf abbr drückt bei Länderwahl
  
  if not (abbr=0) then
  begin
  Credits := 0;
  case Land of   //Beispiel wies Funktioniert bei der Einleitung
    1: game_api_messageBox(EinleitungDE);
    2: game_api_messageBox(EinleitungEng);
  end;

  Quiz1; // multiple choice
  Quiz2; // Rätsel
  Quiz3; // Kopfrechnen

  if (Q1_richtig+Q2_richtig+Q3_richtig = Q1_AnzFragen+Q2_AnzFragen+Q3_AnzFragen) then
  begin
    mission_win;
  end
  else mission_lose;
  end
  else mission_win;     //kann auch mission_lose sein, je nach dem welches von beiden man ändern will
end;


procedure OnMissionWin;
begin
  if not (abbr=0) then  //das er nix tut wenn er abbricht
  begin
  game_api_messageBox(Gewonnen);
  savegame_api_FreeCredits(1000000,kbEG);
  game_api_messageBox('Sie erhalten 1000000 Credits.');
  Zusammenfassung;
  end;
end;

...




Problem bei der Lösung ist, das man am ende viele globale Konstanten hat, die man nicht braucht und das man eben sehr oft den case-befehl bemühen muss (überall wo was geschrieben steht). Eine elegantere Lösung ist mir im Moment aber leider auch nicht eingefallen.

P.s.: Das bei case ist nur bsp., weswegen 3 und 4 nicht einbezogen sind (3 und 4 sind ja nur hier als bsp. für andere sprache gedacht)
verfasst am: 27.01.2022, 13:24
Registrierdatum: 27.01.2022, 13:07

 Beiträge: 318
I bet you do crossword puzzles in ink. https://housecleaningolympiawa.com
verfasst am: 13.06.2022, 18:02
Registrierdatum: 29.10.2021, 14:57

 Beiträge: 763
Good article, but it would be better if in future you can share more about this subject. Keep posting. customclosetsdesigncleveland.com



Du musst dich registrieren um auf dieses Thema zu antworten.
Login :: » Name » Passwort

Ladezeit (sec.): 0.005 · Powered by miniBB 1.6 with parts of 1.7 © 2001-2003