Skip to content

Serialization Design

joeldushouyu edited this page Apr 6, 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

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 user information

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

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;Faster,5,20 
 * ENDL#

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