simple text based car racing game
Nov 10, 2012 at 3:18am UTC
Ok so I have to make a simple racing game where the user inputs 1, 0, or -1 for the increments in horizontal and vertical acceleration/deceleration to guide the "car" (which is represented as a "0" in the text game) to the finish line.
The part that I'm having trouble with is when the "car" crashes into the side of the wall or barrier. The code is supposed to be so that the "car" is embedded in the side of the wall or barrier but I'm not sure how to make it work. Will someone help me?
The project information is here:
http://www.umich.edu/~engr101/Bielajew/a6.pdf
and what I have so far is here:
the code that is specifically giving me trouble is from lines 116 to 140. Everything above that is working fine I believe.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
#include <iostream>
#include <vector>
#include <cstdlib>
#include <cmath>
using namespace std;
const int row = 52;
const int column = 72;
void printRace(char array1[row][column]) //prints 52 by 72 grid
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
cout << array1[i][j];
}
cout << endl;
}
}
void initRace(char array2[row][column]) //prints track layout
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
if (i == 0) //top boundary
{
array2[i][j] = 'X' ;
}
else if (i == 51 && j < 65) //bottom boundary
{
array2[i][j] = 'X' ;
}
else if (i == 51 && j < 71) //prints finish line
{
array2[i][j] = 'F' ;
}
else if ((i >= 1 && i <= 51) && j == 0) //left boundary
{
array2[i][j] = 'X' ;
}
else if ((i >= 1 && i <= 51) && j == 71) //right boundary
{
array2[i][j] = 'X' ;
}
else if ((i >= 1 && i <= 35) && (j >= 10 && j <= 29)) //left barrier
{
array2[i][j] = 'X' ;
}
else if ((i >= 16 && i <= 50) && (j >= 40 && j <= 64)) //right barrier
{
array2[i][j] = 'X' ;
}
else
{
array2[i][j] = ' ' ;
}
}
}
}
int main()
{
char track[row][column];
initRace(track);
track[1][1] = '0' ;
printRace(track);
int xVelocity = 0, xAcceleration = 0;
int yVelocity = 0, yAcceleration = 0;
int xPosition = 1, yPosition = 1;
int counter = 0; //counter for seconds
bool ontrack;
while (1)
{
cout << "Horizontal and vertical acceleration (-1, 0, 1): " ;
cin >> xAcceleration >> yAcceleration;
counter++;
if (xAcceleration < -1 || xAcceleration > 1)
{
printRace(track);
cout << "Crashed after " << counter << " seconds" << endl;
return -1;
}
if (yAcceleration < -1 || yAcceleration > 1)
{
printRace(track);
cout << "Crashed after " << counter << " seconds" << endl;
return -1;
}
xVelocity = xVelocity + xAcceleration;
yVelocity = yVelocity + yAcceleration;
xPosition = xPosition + xVelocity;
yPosition = yPosition + yVelocity;
track[yPosition][xPosition] = '0' ;
printRace(track);
if ((yPosition == 0 && xPosition < 10) || (yPosition == 0 && xPosition > 30)) //when car is embedded in top boundary
{
track[0][xPosition] = '0' ;
printRace(track);
cout << "Crashed after " << counter << " seconds" << endl;
}
if (yPosition == 51 && xPosition < 41) //when car is embedded in bottom boundary
{
track[51][xPosition] = '0' ;
printRace(track);
cout << "Crashed after " << counter << " seconds" << endl;
}
if ((yPosition >= 1 && yPosition <= 51) && xPosition == 0) //when car is embedded in left boundary
{
track[yPosition][0] = '0' ;
printRace(track);
cout << "Crashed after " << counter << " seconds" << endl;
}
if ((yPosition >= 1 && yPosition <= 51) && xPosition == 71) //when car is embedded in right boundary
{
track[yPosition][71] = '0' ;
printRace(track);
cout << "Crashed after " << counter << " seconds" << endl;
}
return 0;
}
Last edited on Nov 10, 2012 at 3:26am UTC
Topic archived. No new replies allowed.