"battleship Game" Computer Program

Matlab program that was created to simulate the board game "Battleships".
View more...
   EMBED

Share

Preview only show first 6 pages with water mark for full document please download

Transcript

function battleShapes() %max kondrath %donnie fenrich %4/10/10 %This is the main program of our battleship game %it encompasses a subprogram with most of the code (battleShip(x,y)) %This program inputs a turn counter to increase or decrease the difficulty %of the game %Parameters--------------------------------------- %Initializes sounds---------------------------------%game introduction music airRaid1 = wavread('airRaid.wav'); airRaid = airRaid1(1:1200000); %boat sink sound boatSink = wavread('boatSink.wav'); %boat hit sound boom = wavread('boom.wav'); %sea gulls and water sounds seaGulls = wavread('seaGulls.wav'); %sub ping sound subPing = wavread('subPing.wav'); %Game exit sound trumpet = wavread('trumpet.wav'); %boat miss sound whoosh = wavread('whoosh.wav'); %max and min axis values maximum = 1000; minimum = 1; %Turn value for different difficulties noviceTurn = 20; mediumTurn = 15; masterTurn = 10; %variable for new color of boat once they have been sunk colormap winter; %final display when game ends final = imread('final.jpeg'); %variables boat1Hit = boat2Hit = boat3Hit = boat4Hit = boat5Hit = to count number of hits on each boat 0; 0; 0; 0; 0; %number of hits each boat can stand strength1 = 1; strength2 = 1; strength3 = 1; strength4 = 1; strength5 = 1; %empty ocean and color values redSea = zeros(1000,1000); boatColor = 255; %declares size of each boat in a matrix boat1 = zeros(100,100); boat1(1:100,1:100) = boatColor; boat2 = zeros(100,100); boat2(1:100,1:100) = boatColor; boat3 = zeros(200,200); boat3(1:200,1:200) = boatColor; boat4 = zeros(200,200); boat4(1:200,1:200) = boatColor; boat5 = zeros(200,200); boat5(1:200,1:400) = boatColor; %starting template/position for boats on grid boat1X = (20:119); boat1Y = (20:119); redSea(boat1Y,boat1X) = boat1; boat2X = (401:500); boat2Y = (101:200); redSea(boat2Y,boat2X) = boat2; boat3X = (701:900); boat3Y = (201:400); redSea(boat3Y, boat3X) = boat3; boat4X = (201:400); boat4Y = (401:600); redSea(boat4Y,boat4X) = boat4; boat5X = (501:900); boat5Y = (701:900); redSea(boat5Y,boat5X) = boat5; %GAME INTRODUCTION DISPLAYS---------------------------------------------------disp(['Many fought for their lives, the sea..',... 'red with blood, blue with water,']); disp(' '); disp(['Stained from betrayal,ravished by conquest,',... 'cascading the solemn colors of greed']); disp(' '); disp(['Your brothers fight, you have been injured,',... 'your body is weak; but your will is strong']); disp(' '); disp(['As the success of your escape draws near,',... 'enemy fire swallows the landscape.']) disp(' '); disp(['You are our last hope, fight with bravery,',... 'die with honor..']); %plays game introductory music soundsc(airRaid,70000); quest2 = questdlg(['rageeee']); %image matrix that is intial ocean with battleships on it imagesc(redSea); %Algorithm------------------------------------------------------------------------------------------------------------------------------- %game setup and instructions----------------dialog boxes with error checking-----------------------------quest1 = questdlg(['Read carefully. First, the',... 'key to the game is to destroy your enemys ships. In this game your enemy is the turn counter.',... 'You will be picking coordinates to launch your missiles on a 1000 by 1000 grid.',... strengths. 'Your enemy fleet will have different sized boats with different ',... 'Are you ready to contintue?','BATTLESHAPES']); if length(quest1) == 2 || length(quest1) ==6 warndlg('You must click yes to continue retry game!'); return end if length(quest2) == 2 || length(quest2) ==6 warndlg('You must click yes to continue retry game!'); return end quest3 = questdlg(['Has the game playing field (figure1) been place over the right',... 'half of the screen?','BATTLESHAPES']); if length(quest3) == 2 || length(quest3) ==6 warndlg('You must click yes to continue retry game!'); return end quest4 = questdlg(['Are you ready to return to the commanders window and ',... 'start the game?','BATTLESHAPES']); if length(quest4) == 2 || length(quest4) ==6 warndlg('You must click yes to continue retry game!'); return end %input for amount of turns (difficulty) difficulty = input('Please enter difficulty>>> novice, medium, or master in SINGLE QUOTES please: '); %using user input sets number of turns for user disp('number of shots: '); if difficulty == ('novice') numberTurns = noviceTurn; disp(numberTurns); elseif difficulty == ('medium') numberTurns = mediumTurn; disp(numberTurns); elseif difficulty == ('master') numberTurns = masterTurn; disp(numberTurns); else warndlg('wrong value was entered read carefully and try again. Sorry, program exiting'); return end %MAIN GAME %ALGORITHM----------------------------------------------------------------%-------------------------------------------------------------------------- %while loop including random number subprogram and hit miss checker... %loops through "infinitely"(1000)times while number of terms is checked near bottom %you lose once you go over your amount of turns infiniteTurn = 10000; count = 1; while (count < infiniteTurn) %calls random number subprogram----------------------randomX = randomMex1; randomY = randomMex2; %sets users input shot to coordinates and checks for %errors-------------------------------------------------------xCoord = input('input x-Coordinate: disp('X shot error: '); disp(randomX); '); %Checks if users input coordinates are out of bounds %if so then they will be corrected to closest boundary value if xCoord > maximum xCoord = maximum; elseif xCoord < minimum xCoord = minimum; end %displays x and y shot error (adds difficulty to game) yCoord = input('input y-Coordinate: disp('Y shot error: '); disp(randomY); '); %Checks if users input coordinates are out of bounds %if so then they will be corrected to closest boundary value if yCoord > maximum yCoord = maximum; elseif yCoord < minimum yCoord = minimum; end %gets new skewed coordinates and checks if they are out of bounds %if coordinates are out of bounds they are set to boundary values newXCoord = randomX + xCoord; newYCoord = randomY + yCoord; if newXCoord > maximum newXCoord = maximum; elseif newXCoord < minimum newXCoord = minimum; end if newYCoord > maximum newYCoord = maximum; elseif newYCoord < minimum newYCoord = minimum; end %end of coordinate skew code %-------------------------------------------------------------- %displays users final shot before hit/miss analysis executes disp('Your shot coordinates using (x,y) coordinate system: disp(newXCoord); disp(newYCoord); %plays sound (also used as a pause) soundsc(subPing,50000); '); %Master Subprogram %determines if shot is a hit or miss %-----------------------------------------------------------------%-----------------------------------------------------------------hitMiss = coordinateInputs((newYCoord),(newXCoord)); %-----------------------------------------------------------------%-----------------------------------------------------------------%--------------------HITMISS CONDITIONALS-------------------------%------------------------------------------------------------------ %Conditional branching that takes value from hitMiss subprogram and %evalutes correct operations %------------------------------------------------------------%variables to count hits on boats are also incremented when %necessary if (hitMiss == 0) %message box and sound for a missed shot msgbox('Miss, try again.','BATTLESHAPES'); soundsc(whoosh,50000); elseif (hitMiss == 1) boat1Hit = boat1Hit +1; %checks for sunken boat 1-------------if (boat1Hit == strength1) soundsc(boatSink,50000); soundsc(seaGulls(1:200000),50000); msgbox('You sunk my Destroyer!','BATTLESHAPES') % Fade color while loop--------------------colorIndex = 255; stopIndex = 0; while (colorIndex >= stopIndex) redSea(boat1Y,boat1X) = colorIndex; imagesc(redSea); pause(.001); colorIndex = colorIndex - 1; end elseif boat1Hit > strength1 %if boat is already sunk miss operations will evaluate soundsc(whoosh,50000); msgbox('You have already sunk this ship!','BATTLESHAPES') else soundsc(boom,50000); msgbox('>>>>>>>>> Hit <<<<<<<<<<<','BATTLESHAPES') end elseif (hitMiss == 2) boat2Hit = boat2Hit + 1; %checks for sunken boat 2-----------------if boat2Hit == strength2 soundsc(boatSink,50000); soundsc(seaGulls(1:200000),50000); msgbox('You sunk my Battleship!','BATTLESHAPES') % Fade color while loop--------------------colorIndex = 255; stopIndex = 0; while (colorIndex >= stopIndex) redSea(boat2Y,boat2X) = colorIndex; imagesc(redSea); pause(.001); colorIndex = colorIndex - 1; end elseif boat2Hit > strength2 soundsc(whoosh,50000); msgbox('You have already sunk this ship!','BATTLESHAPES') else soundsc(boom,50000); msgbox('>>>>>>>>> Hit <<<<<<<<<<<','BATTLESHAPES') end elseif (hitMiss == 3) boat3Hit = boat3Hit +1; %checks for sunken boat 3-------------------if boat3Hit == strength3 soundsc(boatSink,50000); soundsc(seaGulls(1:200000),50000); msgbox('You sunk my U-boat, Nein!','BATTLESHAPES') % Fade color while loop--------------------colorIndex = 255; stopIndex = 0; while (colorIndex >= stopIndex) redSea(boat3Y,boat3X) = colorIndex; imagesc(redSea); pause(.001); colorIndex = colorIndex - 1; end elseif boat3Hit > strength3 soundsc(whoosh,50000); msgbox('You have already sunk this ship!','BATTLESHAPES') else soundsc(boom,50000); msgbox('>>>>>>>>> Hit <<<<<<<<<<<','BATTLESHAPES') end elseif hitMiss == 4 boat4Hit = boat4Hit + 1; %checks for sunken boat 4----------------if boat4Hit == strength4 soundsc(boatSink,50000); soundsc(seaGulls(1:200000),50000); msgbox('You sunk my freighter','BATTLESHAPES') % Fade color while loop--------------------colorIndex = 255; stopIndex = 0; while (colorIndex >= stopIndex) redSea(boat4Y,boat4X) = colorIndex; imagesc(redSea); pause(.001); colorIndex = colorIndex - 1; end elseif boat4Hit > strength4 soundsc(whoosh,50000); msgbox('You have already sunk this ship!','BATTLESHAPES') else soundsc(boom,50000); msgbox('>>>>>>>>> Hit <<<<<<<<<<<','BATTLESHAPES') end elseif hitMiss == 5 boat5Hit = boat5Hit + 1; %checks for sunken boat 5----------------if boat5Hit == strength5 soundsc(boatSink,50000); soundsc(seaGulls(1:200000),50000); msgbox('You sunk my aircraft carrier!','BATTLESHAPES') % Fade color while loop--------------------colorIndex = 255; stopIndex = 0; while (colorIndex >= stopIndex) redSea(boat5Y,boat5X) = colorIndex; imagesc(redSea); pause(.001); colorIndex = colorIndex - 1; end elseif boat5Hit > strength5 soundsc(whoosh,50000); msgbox('You have already sunk this ship!','BATTLESHAPES') else soundsc(boom,50000); msgbox('>>>>>>>>> Hit <<<<<<<<<<<','BATTLESHAPES') end end %Checks for end of game if (boat1Hit == strength1) && (boat2Hit ==strength2) && (boat3Hit ==strength3)... && (boat4Hit == strength4) && (boat5Hit ==strength5) warndlg('YOU ARE VICTORIUS!, GAME OVER','BATTLESHAPES'); imagesc(final); colormap gray axis equal soundsc(trumpet,50000); return end %keeps track of number of turns and checks for end game------------count = count+1; %writes number turns to a text file and back in matlab csvwrite('numberTurn.txt',count); turnCounter = csvread('numberTurn.txt'); disp('You are on turn number: disp(turnCounter); '); % [turnCounter] counts how many turns the user has gone through % [numberTurns] is the total number of turns allowed for that % difficulty if count > numberTurns warndlg('You ran out of turns! Enemy is victorius! GAME OVER','BATTLESHAPES') soundsc(trumpet,50000); return end end end