Hi Howard,

This game was inspired by the 1968 movie "The Green Slime" http://www.imdb.com/title/tt0064393/

On 01/08/2011 11:09 PM, Howard Page-Clark wrote:
On 08/1/11 10:13, Pew (piffle.the.cat) wrote:
Hi Lazarus list,
...
I currently have 2 issues:
1) How do I define fragments_to_eggs_subrange which is an enumerated
portion of green_types.
2) How do I define a constant array of strings //
string_stunned_the_green_message, etc
Thank you. My pascal is a bit rusty and I have an excellent text book, however, I need to buy some new reading glasses. I will do that on Monday. :-)
You want the following:

type
green_types = ( Fragments, Babies, Adults, Eggs, Group_of_Green_things );

  fragments_to_eggs_subrange = Fragments..Eggs;

const
  GreenTypeStrings : array[green_types] of string =
    (' stunned the Fragment', ' stunned the Baby', ' stunned the Adult',
    ' stunned the Egg', ' stunned the Group of Green Things');

// not compiled yet

My next step is to change the const definition to variables so that I can define:

type
languages = ( English, Italian, German, Spanish, Esperanto, Simplified_Chinese, Japanese );

// I probably need to define the font name for each language also
// does anyone know the standard linux fonts for these languages???

  AnsiString_noun_of_green_message_2D_array =
    array[languages,green_types] of AnsiString;

// etc etc etc

  article_language_array = array[languages] of AnsiString;
  definitive_article_array = array[languages] of AnsiString;

var
  AnsiString_noun_of_green_message
    : array[green_types] of AnsiString;
{
  (' a Fragment', ' a Baby', ' an Adult',
    ' an Egg', ' The Group of Green Things');
}

type
  language_array_of_AnsiString = array[ languages ] of AnsiString;

AnsiString_constitution_is : language_array_of_AnsiString; // = ' constitution is: '

AnsiString_He_rolled_a : language_array_of_AnsiString; // = 'He rolled a '

AnsiString_stunned_the_green_message: language_array_of_AnsiString; // = ' stunned '

AnsiString_killed_the_green_message: language_array_of_AnsiString; // = ' killed'

AnsiString_There_is_no_longer: language_array_of_AnsiString; // = 'There is no longer'

AnsiString_here_to_attack: language_array_of_AnsiString; // = ' here to attack.'

AnsiString_survived_the_attack: language_array_of_AnsiString; // = ' survived the attack.')

var
  AnsiString_There_is_no_longer : array[ languages ] of AnsiString;
AnsiString_noun_of_green_things :array[ languages, green_jj ]of AnsiString;
  AnsiString_here_to_attack :array[ languages ]of AnsiString;
// etc
  language : languages;
begin

{

Ask user for language preference
Open ini file and read file containing Ansi constants
close ini file
read and assign AnsiStrings from text file to variables
close text file

}
// code fragment
  info_form.SynMemo1.lines.add(
AnsiString_There_is_no_longer[ language ] +
AnsiString_noun_of_green_things[ language, green_jj ]+
     AnsiString_here_to_attack[ language ] );
// There is no longer a xxx here to attack. In the language of the user.
end;

var
  green,
  green_jj : green_types;
  k, count : byte;
  temp_green_count : array[ fragments_to_eggs_subrange ] of integer;
begin
  roll := random_in_range( lower, upper );
  if attacking_what =
    // an Egg
    article[language, 2]+' '+AnsiString_noun_of_green_message[Egg]then
      green_jj := Eggs
  else
    if attacking_what =
       // a Baby
article[language,1]+' '+AnsiString_noun_of_green_message[Babies]then
      green_jj := Babies
    else
      if attacking_what =
        // a Fragment
article[language,1]+' '+AnsiString_noun_of_green_message[Fragments]then
        green_jj := Fragments
      else
        if attacking_what =
           // an Adult
article[language,2]+' '+AnsiString_noun_of_green_message[Adults]then
          green_jj := Adults
        else { a group of Green Things }
          green_jj := Group_of_Green_things;
  end;

  info_form.SynMemo1.lines.add( definitive_article +

//green_types = ( Fragments, Babies, Adults, Eggs, Group_of_Green_things );
// e.g. The Egg's constitution is xxx
    // etc

    AnsiString_noun_of_green_message[ language, green_jj ] + ''' +
    AnsiString_constitution_is[ language ] +
    inttostr( green_stats[ eggs ].constitution ) );

info_form.SynMemo1.lines.add( AnsiString_He_rolled_ a + inttostr( roll ) );

temp_green_count[ green_jj ] := crew_data[ j ].green_data.present_count[ green_jj ];

  if roll >= green_stats[ green_jj ].constitution then
  begin
    if green_things[ attack_room_no ].present_count[ green_jj ] > 0 then
       begin
         dec( green_things[ attack_room_no ].present_count[ green_jj ] );
         if trying_to_stun then
         begin
inc( green_things[ attack_room_no ].stunned_count[ green_jj ] );
           info_form.SynMemo1.lines.add( name +
             AnsiString_stunned_the_green_message[ language ]+
             AnsiString_noun_of_green_things[ language, green_jj ]);
         end
         else
          info_form.SynMemo1.lines.add( name +
AnsiString_killed_the_green_message[ language ]+
              AnsiString_noun_of_green_things[ language, green_jj ]);
         end
    else
info_form.SynMemo1.lines.add(
AnsiString_There_is_no_longer[ language ] +
AnsiString_noun_of_green_things[ language, green_jj ]+
        AnsiString_here_to_attack[ language ] );
    end
  else
info_form.SynMemo1.lines.add(
AnsiString_noun_of_green_things[ green_jj ]+
        AnsiString_survived_the_attack[ language ] );
  end;
[...]

There are actually different arrays of strings for different states of action with the Green Things.
HTH

Howard


Peter :-)))


pew

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus



--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to