battleship[2] - FINAL PROJECT  ­  ­  ­ C++...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: FINAL PROJECT  ­  ­  ­ C++ LAB FALL 2010 INTRODUCTION The final lab project is something that we had in mind with the TAs since the beginning of the class. We consider that it is the best way to see what you managed to pick up during this year’s C++ lectures and provide you with personalized advice on how to proceed with programming in the semesters to come. In general, the project is on object oriented programming even though as you all see in class, programming is cumulative, meaning that everything will be required at some point in order to put your ideas into “paper”. BATTLESHIP GAME The battleship game is based on two major procedures: a. the placement of the ships on the 10x10 board of the game and b. the guesses made from the two players consecutively. The first player to sink all the opponent’s ships is the winner. Let us see this project from a little more detailed point of view. Each player has a separate board of 10x10 positions where the ships can be placed. The ships are 5 and can be placed either horizontally or vertically. More specifically, you have to place the ships, sized 5, 4, 3, 3 and 2 respectively. What do we have to care for in that part? One thing you need to check is if the ship fits in the position the user chooses to place it either horizontally or vertically. How is it possible that a ship does not fit? Let us suppose that you choose to put a 4 size ship vertically at position D8. Clearly it has to go all the way down until D12, which is out of bounds.. Another thing that can go wrong is if there is already another ship placed in one of the places that the newly placed ship is about to use. In that case the user should be prompted again to choose a different position. Moreover, in every game the user has to have a visualization of the board at each time. The visualization is showing the user’s placements while we are still at the placement process. When the places of the ships are finalized, the visualization now shows the guesses that have already been made. If a ship is being hit during the guessing process, the user should be notified that the attempt was successful. Also, in case an opponent’s ship gets sunk, there should be another message letting the player know that he successfully destroyed one of the opponent’s placed ships. In words, it all looks pretty clear, however it requires a lot of checking and a lot of careful planning. Do not be alarmed though, the final project is something that we will check to see the way you think, and not the output on screen. Even if your code does not compile, give it your best shot and you will receive a mail or even better I can meet you in person and explain the problems in your programming or share with you our insights on what you could do more efficiently. SAMPLE RUN Welcome to Battleship! Press 1 to play or 0 to quit: 1 PLAYER 1, choose your positions: A B C D E F o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o G o o o o o o o o o o H o o o o o o o o o o I o o o o o o o o o o J o o o o o o o o o o K o o o o o o o o o o L o o o o o o o o o o Choose for ship #1 (col, row, v or h): A 6 h A B C D E F G o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Choose for ship #2 (col, row, v or h): A 5 v H o o o o o o o o o o I o o o o o o o o o o J o o o o o o o o o o K o o o o o o o o o o L o o o o o o o o o o H o o o o I o o o o J o o o o K o o o o L o o o o You cannot place this ship there! A B C D E o o o o o o o o o o o o o o o o o o o o F o o o o G o o o o o o o o o o o x x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Choose for ship #2 (col, row, v or h): L 1 v o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o A B C D E F G o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Choose for ship #3 (col, row, v or h): H 3 h H o o o o o o o o o o I o o o o o o o o o o J o o o o o o o o o o K o o o o o o o o o o L x x x x o o o o o o A B C D E F G o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Choose for ship #4 (col, row, v or h): F 2 v H o o x o o o o o o o I o o x o o o o o o o J o o x o o o o o o o K o o o o o o o o o o L x x x x o o o o o o A B C D E F G o o o o o o o o o o o o x o o o o o o x o o o o o o x o o o o o o o o x x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Choose for ship #5 (col, row, v or h): G 10 h H o o x o o o o o o o I o o x o o o o o o o J o o x o o o o o o o K o o o o o o o o o o L x x x x o o o o o o A o o o o o x o o o o B o o o o o x o o o o C o o o o o x o o o o D o o o o o x o o o o E o o o o o x o o o o F o x x x o o o o o o G o o o o o o o o o x H o o x o o o o o o x I o o x o o o o o o o J o o x o o o o o o o K o o o o o o o o o o L x x x x o o o o o o PLAYER 2, choose your positions: A B C D E F o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o G o o o o o o o o o o H o o o o o o o o o o I o o o o o o o o o o J o o o o o o o o o o K o o o o o o o o o o L o o o o o o o o o o H o o o o o o o o o o I o o o o o o o o o o J o o o o o o o o o o K o o o o o o o o o o L o o o o o o o o o o H o o o o o I o o o o o J o o o o o K o o o o o L o o o o o Choose for ship #1 (col, row, v or h): A 6 h A B C D E F G o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Choose for ship #2 (col, row, v or h): L 10 v You cannot place this ship there! A B C D E o o o o o o o o o o o o o o o o o o o o o o o o o F o o o o o G o o o o o x x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Choose for ship #2 (col, row, v or h): L 1 v o o o o o o o o o o o o o o o o o o o o o o o o o A B C D E F G o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Choose for ship #3 (col, row, v or h): H 3 h H o o o o o o o o o o I o o o o o o o o o o J o o o o o o o o o o K o o o o o o o o o o L x x x x o o o o o o A B C D E F G o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o x x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Choose for ship #4 (col, row, v or h): F 2 v H o o x o o o o o o o I o o x o o o o o o o J o o x o o o o o o o K o o o o o o o o o o L x x x x o o o o o o A B C D E F G o o o o o o o o o o o o x o o o o o o x o o o o o o x o o o o o o o o x x x x x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Choose for ship #5 (col, row, v or h): G 10 h A B C D E F G H o o x o o o o o o o I o o x o o o o o o o J o o x o o o o o o o K o o o o o o o o o o L x x x x o o o o o o H I J K L o o o o o x o o o o o o o o o x o o o o o o o o o x o o o o o o o o o x o o o o o o o o o x o o o o o x x x o o o o o o o o o o o o o o o x o o x o o o o o o x o o x o o o o o o o o o x o o o o o o o o o o o o o o o o o x x x x o o o o o o E o o o o o o o o o o F o o o o o o o o o o G o o o o o o o o o o H o o o o o o o o o o I o o o o o o o o o o J o o o o o o o o o o K o o o o o o o o o o L o o o o o o o o o o E o o o o o o o o o o F o o o o o o o o o o G o o o o o o o o o o H o o o o o o o o o o I o o o o o o o o o o J o o o o o o o o o o K o o o o o o o o o o L o o o o o o o o o o Ready to start! PLAYER 1, take a pick: A B C D o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Pick (col, row): D 6 HIT! PLAYER 2, take a pick: A B C D o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Pick (col, row): A 1 MISS.. PLAYER 1, take a pick: A o o o o o o o o o o B o o o o o o o o o o C o o o o o o o o o o D o o o o o x o o o o E o o o o o o o o o o F o o o o o o o o o o G o o o o o o o o o o H o o o o o o o o o o I o o o o o o o o o o J o o o o o o o o o o K o o o o o o o o o o L o o o o o o o o o o E o o o o o o o o o o F o o o o o o o o o o G o o o o o o o o o o H o o o o o o o o o o I o o o o o o o o o o J o o o o o o o o o o K o o o o o o o o o o L o o o o o o o o o o Pick (col, row): D 7 MISS.. PLAYER 2, take a pick: A B C D x o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o Pick (col, row): A 5 MISS.. and so on.. OTHER IDEAS ON THE IMPLEMENTATION The following ideas are to be implemented if you have time in order to make the game more realistic. 1. Wouldn’t it be better if the users could choose their names, instead of PLAYER 1 and PLAYER 2? 2. As soon as one of the user is placing the ships on the board, it is a good idea to advise the other player to look away (maybe pressing a button before the placement process starts). 3. Instead of just recording the guesses and the non ­yet chosen positions(x and o respectively) in the guessing part, wouldn’t it be better to record failed and successful guesses (i.e. with f and s respectively instead of a simple x)? Good luck everyone! Starting next week I will have extra office hours in light of the final exam and the final project. First create your ideas on paper and then try to put them to work. For any more information do not hesitate to ask me or the TAs. ...
View Full Document

This note was uploaded on 09/27/2011 for the course CGS 2421 taught by Professor Onal during the Spring '09 term at University of Florida.

Ask a homework question - tutors are online