Skip to content

Serialization Design

joeldushouyu edited this page Apr 9, 2021 · 35 revisions

Serialization Design

The game will be save in a customize .txt file named with username, using JAVA build in library- PrintWriter and BufferedReader. The game will load/save the file once the player envoke the correspond save/load button

The first line of file will consist of the amount of time left at the current level:

Note:

If the amount of time left is equal to 0. In another phrase the user saved at the end of a level. The file will simply save the game at the **next level ** with the exception that it is already the end of game. If the user save at the end of game. The file will only consist with a line of "###END###" to indicate the end of entire game

The second line of file will consist of a number indicate the current level

The third line of file will consist the difficulty level of the game in String, such as {easy,medium,hard}

The fourth line consist a number indicate number of player

A string of ###user will come before every string line consist of player's information

format for single player

The format for player's information comes in a string line with username; shipSkin; totalCoins; current score in the level; UpperLeftXPosition; UpperLeftPosition; deltaX; deltaY; and additional affects on the player separate by a colon. Additionally, information for additional affects will be separate by commas according to the additional affect type within the colons

format for more than one player

The format for player's information comes in a string line with shipSkin; totalCoins; current score in the level; UpperLeftXPosition; UpperLeftPosition; deltaX; deltaY; and additional affects on the player separate by a colon. Additionally, information for additional affects will be separate by commas according to the additional affect type within the colons.

Note: userName is been taken out,** since this mode of game does not require any login of user.**

The line after player's information consist the number of game Object

Note: this will only appear if the player did not save at the end of game.

A string of ###gameobject will come before every string line consist of game object The format for game object comes in a string line with object type; specific Object Type; UpperLeftXPosition; UpperLeftYposition; deltaX; delatY; and additional affects on the object, each separate by a colon. Additionally, information for additional affects will be separate by commas within the colons.

The file ends with ENDL#, indicate the end of a files

Example of saving file data

Example 1

 * 15
 * 2
 * easy
 * 1
 * ###user
 * Jack;SHIP1;100;20;300;450;10;10;Faster,5,20  

Explanation: Faster is an example affect make player move faster. The player gain a increase of speed by5, and for 20 seconds

 * 3
 * ###gameobject
 * EnemyObject;GHOST;100;230;4;4;Freeze,0,5

Explanation: Freeze is an powerup that change the deltax and deltay for EnemyObject to 0 for 5 seconds

 * ###gameobject
 * Obstacle;Obstacle;100;250;0;0
 * ###gameobject
 * PowerUp;Freeze;20;50;0;0
 * ENDL#
 * 

Example2

note: situation when user save at the end/ or very beginning of a level

 * 60
 * 4
 * easy
 * 1
 * ###user
 * Andrew;SHIP1;100;20;300;450;10;10
 * ENDL#

Example3

note: more than 1 player mode

 * 28
 * 4
 * easy
 * 2
 * ###user
 * SHIP1;100;20;300;450;10;10;Faster,5,20 
 * ###user
 * SHIP2;100;20;300;450;10;10;Faster,5,20 
 * ENDL#

Example4

note: save at the end of game

 * ###END###

url for save/load function and test case

[Save/Load Methods] https://github.com/bjucps209/spring2021-team4/blob/main/Wave/src/model/Wave.java

[Unit Tests] https://github.com/bjucps209/spring2021-team4/blob/main/Wave/src/model/WaveTest.java

Peer Review: 2021/4/3 4:17 pm Reviewer: Conner Recommendation: Beware of change might occur later during the implementation stage, such as adding new variables.

Clone this wiki locally