Difference between revisions of "2022 - There is a load game feature but no way of saving a game"

From TRCCompSci - AQA Computer Science
Jump to: navigation, search
(Created page with "=Issue= The program contains the code required to load a game, but doesn't contain the code to save a game. The LoadGame method of the BreakThrough class can be seen below:...")
 
(What you need to do)
Line 38: Line 38:
  
 
The easiest way to figure out how to save a file is to use the LoadGame sequence, every MyStream.ReadLine() will read one line of the text file. You therefore need to reverse the process.
 
The easiest way to figure out how to save a file is to use the LoadGame sequence, every MyStream.ReadLine() will read one line of the text file. You therefore need to reverse the process.
 +
 +
=What does a save game need to write=
 +
# the score
 +
# the current lock as a string for the conditions
 +
# the status of the current lock conditions
 +
# the Hand card collection as a string include card numbers
 +
# the Sequence card collection as a string include card numbers
 +
# the Discard card collection as a string include card numbers
 +
# the Deck card collection as a string include card numbers
  
 
=What you need to do=
 
=What you need to do=
* Study what the LoadGame method reads line by line
+
==Lock class==
* Now get these values in turn & write it to a text file
+
* create a method to output the lock conditions as a string
 +
* create a method to output the status of the conditions as a string
 +
 
 +
==CardCollection class==
 +
* create a method to output the entire collection
 +
* remember to include each card number
 +
* make sure you check if the card collection is not empty
 +
 
 +
==SaveGame method==
 +
Create a save game method which sets up a StreamWriter, you can copy the StreamReader code and change read for write, now instead of using myStream.ReadLine use myStream.WriteLine().
 +
 
 +
The SaveGame method should:
 +
* write the score
 +
* use your method to write the lock condition
 +
* use your method to write the status of each condition
 +
* use your method to write each card collection in order

Revision as of 18:20, 21 November 2021

Issue

The program contains the code required to load a game, but doesn't contain the code to save a game.

The LoadGame method of the BreakThrough class can be seen below:

        private bool LoadGame(string fileName)
        {
            string LineFromFile;
            string LineFromFile2;
            try
            {
                using (StreamReader MyStream = new StreamReader(fileName))
                {
                    LineFromFile = MyStream.ReadLine();
                    Score = Convert.ToInt32(LineFromFile);
                    LineFromFile = MyStream.ReadLine();
                    LineFromFile2 = MyStream.ReadLine();
                    SetupLock(LineFromFile, LineFromFile2);
                    LineFromFile = MyStream.ReadLine();
                    SetupCardCollectionFromGameFile(LineFromFile, Hand);
                    LineFromFile = MyStream.ReadLine();
                    SetupCardCollectionFromGameFile(LineFromFile, Sequence);
                    LineFromFile = MyStream.ReadLine();
                    SetupCardCollectionFromGameFile(LineFromFile, Discard);
                    LineFromFile = MyStream.ReadLine();
                    SetupCardCollectionFromGameFile(LineFromFile, Deck);
                }
                return true;
            }
            catch
            {
                Console.WriteLine("File not loaded");
                return false;
            }
        }

The easiest way to figure out how to save a file is to use the LoadGame sequence, every MyStream.ReadLine() will read one line of the text file. You therefore need to reverse the process.

What does a save game need to write

  1. the score
  2. the current lock as a string for the conditions
  3. the status of the current lock conditions
  4. the Hand card collection as a string include card numbers
  5. the Sequence card collection as a string include card numbers
  6. the Discard card collection as a string include card numbers
  7. the Deck card collection as a string include card numbers

What you need to do

Lock class

  • create a method to output the lock conditions as a string
  • create a method to output the status of the conditions as a string

CardCollection class

  • create a method to output the entire collection
  • remember to include each card number
  • make sure you check if the card collection is not empty

SaveGame method

Create a save game method which sets up a StreamWriter, you can copy the StreamReader code and change read for write, now instead of using myStream.ReadLine use myStream.WriteLine().

The SaveGame method should:

  • write the score
  • use your method to write the lock condition
  • use your method to write the status of each condition
  • use your method to write each card collection in order