hi. first off. tried searching on google for this today. a simple battleship game. well, did not find any thing. found heaps of examples. but either too complex for my requiremenetsrequirements , or for java, or c# or visual basic. had a couple of gos at this. so would like your input. see if i am going about it the right way or the wrong way. or maybe you can point me to a simple battleships game, modified. so will paste the session notes and my code below. if any one can help me out. got all my other assignments working. this one is a bit of a challenge. trying to modify it from the sample program, which was a norts and crosses game. but my leturer, is so over worked, and teaching face to face, at multiple locations, and also has other online students as well, and also on comittees, organising meetings, for ccurriculum, etc. and got a fmaily and a life. so i am the only blind programmer. and could be waiting weeks for him to reply. not even sure if his computer system is up and running. did get one e-mail from him yesterday. so that is the first communication had from him in a few weeks. so now, if any one can help, will paste my code below and the session notes. all about multi dimentional arrays. cheers Marvin. code starts here: /* Program: BattleShip File: battleship.cpp Description: BattleShips program. Author: Marvin Hunkin. Revision: 1.00 25/08/2009 First release. */ // iostream is needed for the cout statement. #include <iostream> using namespace std; void initializeBoard(); void displayBoard(); void setupShips(); bool checkPosition(int xpos, ypos, player); void playGame(); char p1board[10][10]; char p2board[10][10]; int main() { initializeBoard(); displayBoard(); setupShips(); checkPosition(int xpos, ypos, player); playGame(); return 0; } // close main function // Initialize Board function. void initializeBoard() { for (int i = 0; i<10; i++) { for (int j = 0; j < 10; j++) { p1board[i][j] = 's'; p2board[i][j] = 's'; } // close inner for loop. } // close outer for loop. } // close initializeBoard function. // Display Board function. void displayBoard() { cout << "\n1 2 3 4 5 6 7 8 9\n"; for (int i = 0; i < 10; i++) { cout << i + 1; for (int j = 0; j < 10; j++) { cout << p1board[i][j]; cout << p2board[i][j]; } // close inner for loop. cout << endl; } // close outer for loop. cout << "\n\n"; } // close displayBoard function. // Setup Ships function goes here. void setupShips() { for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { p1board[i][j] = '*'; p2board[i][j] = '*'; } // close inner for loop. } // close outer for loop. } // close setupShips function. // bool CheckPosition goes here. bool checkPosition(int xpos, ypos) { if (p1board[xpos][ypos] = '*') & (p1board[xpos][ypos] = 's') { return true; } // close if block. return false; else if (p2board[xpos][ypos] = '*') & (p2board[xpos][ypos] = 's') { return true; } // close else if block. return false; } // close checkPosition function. // playGame function goes here. // Declare variables. char miss = 'm'; char hit = 'h'; char mark = '*'; int xpos, ypos, player; bool validMove; char winner = '?'; for (int i =1; i < 10; i++) { cout << "Player 1" << player<< "enter your row value:"; cin>> xpos; cout << "player 1" << player << "enter your colum value:"; cin>> ypos; xpos -=1; ypos -= 1; validMove = checkPosition (xpos, ypos); while (validMove) { cout << "That is an invalid move\n"; cout << "Player 1" << player<< "enter your row value:"; cin>> xpos; cout << "player 1" << player << "enter your colum value:"; cin>> ypos; xpos -=1; ypos -=1; validMove = checkPosition(xpos, ypos); } // close while loop. p1board[xpos][ypos] = mark; p2board[xpos][ypos] = mark; if (mark == 'X') { switch(mark) { case 1: miss = 'm'; cout << " You missed!"; break; case 2: hit = 'h'; cout << "Direct hit!"; break; } // close switch block. } // close if block. displayBoard(); if (player 1 = true) { cout << "Player 1 is the winner" << player << endl; } // close if block. else if (player 2 = true) { cout << " Player 2 is the winner" << player << endl; } // close else if block. } // close playGame function. Session Web Page Starts Here: -------------------------------------------------------------------------------- Session 13 Multi Dimension Arrays -------------------------------------------------------------------------------- Objectives The purpose of this session is to introduce the multi dimension array data structure. The multi demension array can be thought of as a more complex form of array which essentially takes the form of a grid.After completing this exercise, you should have a firm grasp of multi dimension arrays, as well as reinforcing your understanding of arrays generally. -------------------------------------------------------------------------------- To extend on what we did in the last session, this session we will create an array of arrays. These are called multi dimensional arrays. Multi dimensional arrays can be very powerful tools for the programer. They can also be a little difficult to understand. The most common type of multidimensional array that you will encounter are two dimensional arrays. The best way to think of these is as tables, were you have rows and columns. You refer to one cell by giving its row and column reference. If you think about the children's game of naughts and crosses, we have a 3 by 3 grid. We can use a two dimensional array to model the board. We can also use the array indexes to place a O or a X into the array where the player wishes to put the mark. This program will require a number of functions to make the process easier to create. We will start with by including iostream and a main function. /* * Program: Multi Dimension Arrays example - 1 * File: m_arrays1.cpp * Description: This program is an exercise to demonstrate the use of multi dimension arrays in a program. * Author: Henry Bush * Revision: 1.00 2/12/2003 First release. */ // iostream is needed for the cout statement. #include <iostream>using namespace std; int main() { } //close main function We will declare an array that will hold char values. The values will be either a O or an X for the players move and a * for a cell that has not had a mark in it yet. So add the following char array declaration before the main function char board[3][3]; The next thing that we are going to do is to create a function to display a title and some instruction to the users. This function will have no return value and take no parameters. Place the declaration before the array declaration and the implementation after the main function void title(); void title() { cout << "\t\tWelcome to O's and X's\nA game for two players\n\n"; cout << "To play this game you enter to numbers, less than 4\n "; cout << "referring to the row and the column that you wish to\n "; cout << "place you mark\n\n"; } // close title function The next thing that we need to do is to initialise the board. We will also place this into another function. This function will also take no parameters and return no values void initialiseBoard(); void initialiseBoard() { for(int i= 0; i < 3; i++) { for(int j= 0; j < 3; j++) { board[i][j] = '*'; } // close inner for loop } // close outer for loop } // close initialiseBoard function The next thing that we are going to do is to display the board. Again this function will have no parameters or return values. It will simply display the board whenever we need to show it. This will be after every move. void displayBoard(); void displayBoard() { cout << "\n 123" << endl; for(int i= 0; i < 3; i++) { cout << (i +1); for(int j= 0; j < 3; j++) { cout << board[i][j]; } // close inner for loop cout << endl; } // close outer for loop cout << "\n\n"; } // close displayBoard function So far everything has been fairly straight forward. The next function that we are going to write will check the values that the user enters and see if that position has already had a mark put into it. If the position has not had a value placed into it then the function will return a true value. If the position has already had a mark then the function will return false. The function will be passed two int values that are the array indexes that refer to the position that the user wishes to place a mark bool checkPosition(int x ,int y); bool checkPosition(int x, int y) { if(board[x][y] != '*') { return true; } // close if block return false; } // close checkPosition function We are getting close to having all of the functions that we need for this program. We need to check if one of the users has won the game. To do this we will create a function that returns a char. This char value will contain the name of character that represents the winner(X or O) or a question mark, indicating that there is no winner at this check. To determine if there is a winner we need to look at each row column and diagonal and see if the values have the same non * value. This function ends up being large, simply by the nature of what it is doing. char checkWinner(); char checkWinner() { char checkValue = '?'; if((board[0][0] == board[0][1]) && (board[0][0] == board[0][2]) && (!(board[0][0] == '*'))) { checkValue = board[0][0]; } // close if block else if((board[1][0] == board[1][1]) && (board[1][0] == board[1][2]) && (!(board[1][0] == '*'))) { checkValue = board[1][0]; } // close else if block else if((board[2][0] == board[2][1]) && (board[2][0] == board[2][2]) && (!(board[2][0] == '*'))) { checkValue = board[2][0]; } // close else if block else if((board[0][0] == board[1][0]) && (board[0][0] == board[2][0]) && (!(board[0][0] == '*'))) { checkValue = board[0][0]; } // close else if block else if((board[0][1] == board[1][1]) && (board[0][1] == board[1][2]) && (!(board[0][1] == '*'))) { checkValue = board[0][1]; } // close else if block else if((board[0][2] == board[1][2]) && (board[0][2] == board[2][2]) && (!(board[0][2] == '*'))) { checkValue = board[0][2]; } // close else if block else if((board[0][0] == board[1][1]) && (board[0][0] == board[2][2]) && (!(board[0][0] == '*'))) { checkValue = board[0][0]; } // close else if block else if((board[0][2] == board[1][1]) && (board[0][2] == board[2][0]) && (!(board[0][2] == '*'))) { checkValue = board[0][2]; } // close else if block else { checkValue = '?'; } // close else block return checkValue; } // close checkWinner function This has all of the utility functions for this program. The next thing that we need to do is to create a function that control the way the game is played. For this simple program we will implement a for loop that will iterate nine times. The game must end at that time as there is no more moves that can be made. Inside the loop we need to tell the player whose turn it is to enter the coordinates for the position that they wish to place their mark. When the player has done that then we need to check to see if it is a valid move. If they have entered an invalid move then we will hold the program in a while loop until they enter a valid move. Next, we place the mark, swap players and then check if there has been a winner with that move. If there has been a winner then inform the players and exit the program . If there has been no winner in that turn then allow the for loop to iterate again. void playGame(); void playGame() { char mark ='X'; int xpos, ypos; bool validMove; char winner = '?'; for(int i = 1; i <= 9; i++) { cout << "Player " << mark << " enter your move row value: "; cin >> xpos; cout << "Enter the column value: "; cin >> ypos; xpos -=1; ypos -=1; validMove = checkPosition(xpos, ypos); while(validMove) { cout << "That is an invalid move\n"; cout << "Player " << mark << " enter your move row value: "; cin >> xpos; cout << "Enter the column value: "; cin >> ypos; xpos -=1; ypos -=1; validMove = checkPosition(xpos, ypos); } // close while loop board[xpos][ypos] = mark; if(mark == 'X') { mark = 'O'; } // close if block else { mark = 'X'; } // close else block displayBoard(); winner = checkWinner(); if((winner == 'X')||(winner == 'O')) { cout << "The Winner is player " << winner << endl; exit(0); } // close if block } // close for loop cout << "The game was a draw\n " << winner << endl; } // close playGame function The last thing left to do is to add code to the main function. This will just set things in motion, initialise the board, display the title and the board and then play the game. int main() { initialiseBoard(); title(); displayBoard(); playGame(); return 0; } //close main function Well that's it. There has been a lot of programming in this program, but I think that bigger programs help in learning how to program. The whole program follows. Make sure that you understand what is happening in each of the functions. The exercise for this session will involve you doing something similar. /* * Program: Multi Dimension Arrays example - 1 * File: m_arrays1.cpp * Description: This program is an exercise to demonstrate the use of multi dimension arrays in a program. * Author: Henry Bush * Revision: 1.00 2/12/2003 First release. */ // iostream is needed for the cout statement. #include <iostream>using namespace std; void title(); void initialiseBoard(); void displayBoard(); bool checkPosition(int x ,int y); void playGame(); char checkWinner(); char board[3][3]; int main() { initialiseBoard(); title(); displayBoard(); playGame(); return 0; } //close main function void title() { cout << "\t\tWelcome to O's and X's\nA game for two players\n\n"; cout << "To play this game you enter to numbers, less than 4\n "; cout << "refering to the row and the column that you wish to\n "; cout << "place you mark\n\n"; } // close title function void initialiseBoard() { for(int i= 0; i < 3; i++) { for(int j= 0; j < 3; j++) { board[i][j] = '*'; } // close inner for loop } // close outer for loop } // close initialiseBoard function void displayBoard() { cout << "\n 123" << endl; for(int i= 0; i < 3; i++) { cout << (i +1); for(int j= 0; j < 3; j++) { cout << board[i][j]; } // close inner for loop cout << endl; } // close outer for loop cout << "\n\n"; } // close displayBoard function void playGame() { char mark ='X'; int xpos, ypos; bool validMove; char winner = '?'; for(int i = 1; i <= 9; i++) { cout << "Player " << mark << " enter your move row value: "; cin >> xpos; cout << "Enter the column value: "; cin >> ypos; xpos -=1; ypos -=1; validMove = checkPosition(xpos, ypos); while(validMove) { cout << "That is an invalid move\n"; cout << "Player " << mark << " enter your move row value: "; cin >> xpos; cout << "Enter the column value: "; cin >> ypos; xpos -=1; ypos -=1; validMove = checkPosition(xpos, ypos); } // close while loop board[xpos][ypos] = mark; if(mark == 'X') { mark = 'O'; } // close if block else { mark = 'X'; } // close else block displayBoard(); winner = checkWinner(); if((winner == 'X')||(winner == 'O')) { cout << "The Winner is player " << winner << endl; exit(0); } // close if block } // close for loop cout << "The game was a draw\n " << winner << endl; } // close playGame function bool checkPosition(int x, int y) { if(board[x][y] != '*') { return true; } // close if block return false; } // close checkPosition function char checkWinner() { char checkValue = '?'; if((board[0][0] == board[0][1]) && (board[0][0] == board[0][2]) && (!(board[0][0] == '*'))) { checkValue = board[0][0]; } // close if block else if((board[1][0] == board[1][1]) && (board[1][0] == board[1][2]) && (!(board[1][0] == '*'))) { checkValue = board[1][0]; } // close else if block else if((board[2][0] == board[2][1]) && (board[2][0] == board[2][2]) && (!(board[2][0] == '*'))) { checkValue = board[2][0]; } // close else if block else if((board[0][0] == board[1][0]) && (board[0][0] == board[2][0]) && (!(board[0][0] == '*'))) { checkValue = board[0][0]; } // close else if block else if((board[0][1] == board[1][1]) && (board[0][1] == board[1][2]) && (!(board[0][1] == '*'))) { checkValue = board[0][1]; } // close else if block else if((board[0][2] == board[1][2]) && (board[0][2] == board[2][2]) && (!(board[0][2] == '*'))) { checkValue = board[0][2]; } // close else if block else if((board[0][0] == board[1][1]) && (board[0][0] == board[2][2]) && (!(board[0][0] == '*'))) { checkValue = board[0][0]; } // close else if block else if((board[0][2] == board[1][1]) && (board[0][2] == board[2][0]) && (!(board[0][2] == '*'))) { checkValue = board[0][2]; } // close else if block else { checkValue = '?'; } // close else block return checkValue; } // close checkWinner function -------------------------------------------------------------------------------- Session 13 Practical Exercise For this exercise you will create a game yourself. The game will be a modified version of battleships. If you are not familiar with the game then a quick overview will help you to create the program for this exercise. The game starts with you placing a number of ships onto a grid and your opponent does the same. Then taking turns each player calls out a grid coordinate. If that matches where the opponent has placed one of his ships then it is sunk. Either way you place a marker on a grid to indicate where you have sent a missile. The game continues until one player has had his whole fleet sunk. For this program the board will be a ten by ten grid and you will place six ships in this grid. If you can complete this exercise without any difficulties then you can proceed to the next lesson. If you found that you had any problems with this exercise then contact your instructor about the problems and attach any working code so that we can discuss where your solutions lay. After you successfully complete this exercise, remember to send your completed code into your instructor for assessment. -------------------------------------------------------------------------------- ps: i would like an answer if possible tonight or tomorrow. been working on this for the past couple of days, apart from doing other necessary tasks and other projects. E-Mail: startrekcafe@xxxxxxxxx Msn: startrekcafe@xxxxxxx Skype: startrekcafe to subscribe to the Jaws Australia group send a blank message to JawsOz-subscribe@xxxxxxxxxxxxxxx Visit my Jaws Australia Group at http://groups.yahoo.com/groups/JawsOz/ __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind