<aside> đź’ź Please read the entire assignment description before jumping into the UML or implementation parts of the PA.

</aside>

Table of Contents

🤖 Background

Now that your BattleSalvo game works locally, it’s time to add multiplayer support using Sockets.

It’d be far too time consuming to play multiplayer BattleSalvo yourself, so you’ll be turning to an automated solution: bolstering your BattleSalvo game to embrace bot-fighting to reliably destroy TA- and student-created BattleSalvo fleets.

What you’ll be doing, but BattleSalvo.

What you’ll be doing, but BattleSalvo.

👾 Recap

In PA03 you created a BattleSalvo game where a human player could compete against a CPU. Because you followed SOLID principles and the MVC design pattern, it should be straightforward to substitute modules of your program, such as the players.

To make sure you have a strong foundation to build from (and in lieu of being able to instantly grade PA03), here is a rough structure for one of many possible PA03 implementations:

![This is an abbreviated UML class diagram. Focus on how the classes and interfaces relate to each other, not on each individual method necessary.

`renderOutput()` is acting as shorthand for the many different print methods you would want in the `ViewOutput` interface.](<https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4df4b7a7-df0d-475c-b8c0-20cd5c2047e9/PA03_UML.drawio_(3).png>)

This is an abbreviated UML class diagram. Focus on how the classes and interfaces relate to each other, not on each individual method necessary.

renderOutput() is acting as shorthand for the many different print methods you would want in the ViewOutput interface.

✅ Key Takeaways

🚧 Important Note

This is a diagram of one of many ideal solutions. If your implementation does not follow this structure, you should still be able to implement PA04. If the route towards implementing PA04 is incredibly unclear, it may be worth touching up your PA03 foundation before moving forward and extending it to implement PA04.

Please talk to a TA if you feel you need to make major changes and are unsure how to proceed.

🔀 Remote Interactions Protocol