#include <iostream>#include <vector>#include <conio.h>#include <windows.h>using namespace std;class Space{public: void SetSpaceStd(); void PrintSpaceStd(); void StartGame(); void MoveLastLine(char direction); void MoveRowUp(); void CheckCollision(); void ClearScreen(); void TheEndPrint(); void gotoxy(int, int); char GameIntro(); short StartShot(); short FindEmptyRows();private: vector<vector<char> > space; short active_row_move; short row_acount;};void Space::SetSpaceStd(){ space.insert(space.end(), 30, vector<char>(72)); for (int i=0; i < 5; i++) { for (int j=3; j < 69; j++) { space[i][j]=''-''; } } for (i=6; i < 25; i++) { for (int j=3; j < 69; j++) { space[i][j]='' ''; } } for (i=1; i < 34; i++) { space[24][i]='' ''; } for (i=40; i < 72; i++) { space[24][i]='' ''; } for (i=0; i < 24; i++) { space[i][0]=space[i][71]=''³''; } for (i=1; i < 71; i++) { space[25][i]=''Ä''; } space[24][36]=''^''; space[24][35]=space[24][37]=''-''; space[24][34]=space[24][38]=''.''; space[25][0]=''À''; space[25][71]=''Ù''; space[24][0]=space[24][71]=''³''; for (i=26; i < 28; i++) { for (int j=1; j < 71; j++) { space[i][j]=space[i+2][j]=''Ä''; space[27][j]='' ''; } } space[26][0] = ''Ú''; space[26][71] = ''¿''; space[27][0] = ''³''; space[27][71] = ''³''; space[28][0] = ''Ã''; space[28][71] = ''´'';}void Space::PrintSpaceStd(){ //ClearScreen(); /*for (i=0; i < 3; i++) { for (int j=0; j < 72; j++) { cout << pre_print[j];<br> }<br> cout << endl;<br> }<br> for (i=0; i < 26; i++)<br> {<br> for (int j=0; j < 72; j++)<br> {<br> cout << space[j];<br> }<br> cout << endl;<br> }<br><br><br> for (int i=0; i < 3; i++)<br> {<br> for (int j=0; j < 72; j++)<br> {<br> gotoxy(j,i);<br> cout << pre_print[j];<br> }<br> cout << endl;<br> }*/</font><br><br> <font color="blue">for</font> (<font color="blue">char</font> i=0; i < 3; i++)<br> {<br> <font color="blue">for</font> (<font color="blue">char</font> j=0; j < 72; j++)<br> {<br> gotoxy(j,i);<br> cout << space[<font color="purple">26+i</font>][<font color="purple">j</font>];<br> }<br> }<br> <br><br> <font color="blue">for</font> (i=0; i < 26; i++)<br> {<br> <font color="blue">for</font> (<font color="blue">char</font> j=0; j < 72; j++)<br> {<br> gotoxy(j,i+3);<br> cout << space[<font color="purple">i</font>][<font color="purple">j</font>]; <br> }<br> cout << endl;<br> }<br>}<br><br><font color="blue">void</font> Space::StartGame()<br>{<br> row_acount = 5;<br> active_row_move=15;<br> <font color="blue">int</font> ch=GameIntro();<br> <br> <font color="blue">while</font>(ch != ''Q'' && row_acount !=0)<br> {<br> row_acount=FindEmptyRows(); <br> <font color="blue">if</font> (_kbhit())<br> {<br> <font color="blue">do</font><br> {<br> ch = toupper(_getch());<br> <br> <font color="blue">if</font> (ch == ''E'')<br> {<br> MoveLastLine(''l'');<br> break;<br> }<br> <font color="blue">if</font> (ch == ''R'')<br> {<br> MoveLastLine(''r'');<br> break;<br> }<br> <font color="blue">if</font> (ch == ''U'')<br> {<br> <font color="blue">short</font> pos;<br> pos=StartShot();<br> space[<font color="purple">23</font>][<font color="purple">pos</font>]=''|'';<br> break;<br> }<br> <font color="blue">else</font><br> {<br> break;<br> } <br> PrintSpaceStd();<br> break;<br> } <font color="blue">while</font>(1);<br> PrintSpaceStd();<br> }<br> CheckCollision();<br> MoveRowUp();<br> PrintSpaceStd();<br> }<br> TheEndPr<font color="blue">int</font>();<br>}<br><br><font color="blue">void</font> Space::MoveLastLine(<font color="blue">char</font> direction)<br>{<br> <font color="blue">if</font> (direction == ''l'')<br> {<br> <font color="blue">if</font> ( !(space[<font color="purple">24</font>][<font color="purple">1</font>] == ''.'') )<br> {<br> <font color="blue">char</font> temp[<font color="purple">70</font>];<br> <font color="blue">for</font> (<font color="blue">char</font> i=0; i < 70; i++)<br> {<br> temp[<font color="purple">i</font>]=space[<font color="purple">24</font>][<font color="purple">i+1</font>];<br> }<br> space[<font color="purple">24</font>][<font color="purple">70</font>]='' '';<br> <font color="blue">for</font> (i=1; i < 70; i++)<br> {<br> space[<font color="purple">24</font>][<font color="purple">i</font>]=temp[<font color="purple">i</font>];<br> }<br> }<br> }<br> <font color="blue">else</font> <font color="blue">if</font> (direction == ''r'')<br> {<br> <font color="blue">if</font> ( !(space[<font color="purple">24</font>][<font color="purple">70</font>] == ''.'') )<br> {<br> <font color="blue">char</font> temp[<font color="purple">70</font>];<br> <font color="blue">for</font> (<font color="blue">char</font> i=1; i < 70; i++)<br> {<br> temp[<font color="purple">i-1</font>]=space[<font color="purple">24</font>][<font color="purple">i</font>];<br> }<br> <font color="gray">//temp[1]='' '';<br></font><br> space[<font color="purple">24</font>][<font color="purple">1</font>]='' '';<br> <font color="blue">for</font> (i=0; i < 69; i++)<br> {<br> space[<font color="purple">24</font>][<font color="purple">i+2</font>]=temp[<font color="purple">i</font>];<br> }<br> }<br> }<br> space[<font color="purple">24</font>][<font color="purple">0</font>]=space[<font color="purple">24</font>][<font color="purple">71</font>]=''³'';<br>}<br><br><font color="blue">short</font> Space::StartShot()<br>{<br> <font color="blue">bool</font> found=0;<br> <font color="blue">short</font> k=0;<br> <br> <font color="blue">while</font>(!found)<br> {<br> <font color="blue">if</font> (space[<font color="purple">24</font>][<font color="purple">k</font>] == ''^'')<br> <font color="blue">return</font> k;<br> k++;<br> }<br> <font color="blue">return</font> 0;<br>}<br><br><font color="blue">void</font> Space::MoveRowUp()<br>{<br> <font color="blue">short</font> temp_row;<br> temp_row = 20 - active_row_move;<br><br> <font color="blue">for</font> (;temp_row < 23;)<br> {<br> <font color="blue">for</font> (<font color="blue">char</font> j=0; j < 70; j++)<br> {<br> space[<font color="purple">temp_row</font>][<font color="purple">j</font>]=space[<font color="purple">temp_row+1</font>][<font color="purple">j</font>];<br> }<br> temp_row++;<br> }<br> <font color="blue">for</font> (<font color="blue">char</font> i=0; i < 70; i++)<br> {<br> space[<font color="purple">23</font>][<font color="purple">i+1</font>]='' '';<br> }<br>}<br><br><font color="blue">void</font> Space::CheckCollision()<br>{<br> <font color="blue">for</font> (<font color="blue">char</font> i=0; i < 5; i++)<br> {<br> <font color="blue">for</font> (<font color="blue">char</font> j=0; j < 70; j++)<br> {<br> <font color="blue">if</font> (space[<font color="purple">i</font>][<font color="purple">j</font>] == ''-'' && space[<font color="purple">i+1</font>][<font color="purple">j</font>] == ''|'')<br> {<br> space[<font color="purple">i</font>][<font color="purple">j</font>] = space[<font color="purple">i+1</font>][<font color="purple">j</font>] = '' '';<br> }<br> <font color="blue">if</font> (space[<font color="purple">i</font>][<font color="purple">j</font>] == '' '' && space[<font color="purple">i+1</font>][<font color="purple">j</font>] == ''|'')<br> {<br> space[<font color="purple">i</font>][<font color="purple">j</font>] = ''|'';<br> space[<font color="purple">i+1</font>][<font color="purple">j</font>] = '' '';<br> }<br> <font color="blue">if</font> (space[<font color="purple">0</font>][<font color="purple">j</font>] == ''|'')<br> {<br> space[<font color="purple">0</font>][<font color="purple">j</font>] = '' '';<br> } <br> }<br> }<br>}<br><br><font color="blue">short</font> Space::FindEmptyRows()<br>{<br> <font color="blue">short</font> temp=0;<br><br> <font color="blue">for</font> (<font color="blue">char</font> i=0; i < 5; i++)<br> {<br> <font color="blue">for</font> (<font color="blue">char</font> j=0; j < 70; j++)<br> {<br> <font color="blue">if</font> (space[<font color="purple">i</font>][<font color="purple">j</font>] == ''-'')<br> {<br> temp++;<br> }<br> }<br> }<br><br> <font color="blue">return</font> temp;<br>}<br><br><font color="blue">void</font> Space::ClearScreen()<br>{<br> HANDLE hConsole = GetStdHandle ( STD_OUTPUT_HANDLE );<br> <font color="blue">if</font> ( hConsole == INVALID_HANDLE_VALUE ) return;<br><br> CONSOLE_SCREEN_BUFFER_INFO csbi;<br> GetConsoleScreenBufferInfo ( hConsole, &csbi );<br> DWORD dwConSize = csbi.dwSize.X * csbi.dwSize.Y;<br> COORD coordScreen = { 0, 0 };<br> DWORD cbWritten;<br> FillConsoleOutputCharacter ( hConsole, (TCHAR) '' '',<br> dwConSize, coordScreen,<br> &cbWritten);<br> SetConsoleCursorPosition ( hConsole, coordScreen);<br>}<br><br><font color="blue">void</font> Space::TheEndPr<font color="blue">int</font>()<br>{<br> ClearScreen();<br> char* end[<font color="purple">5</font>];<br><br> end[<font color="purple">0</font>] = <font color="darkred">" ÛÛÛÛÛ Û Û ÛÛÛÛÛ ÛÛÛÛÛ Û Û ÛÛÛ "</font>;<br> end[<font color="purple">1</font>] = <font color="darkred">" Û Û Û Û Û ÛÛ Û Û Û "</font>;<br> end[<font color="purple">2</font>] = <font color="darkred">" Û ÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛ Û Û Û Û Û "</font>;<br> end[<font color="purple">3</font>] = <font color="darkred">" Û Û Û Û Û Û ÛÛ Û Û "</font>;<br> end[<font color="purple">4</font>] = <font color="darkred">" Û Û Û ÛÛÛÛÛ ÛÛÛÛÛ Û Û ÛÛÛ "</font>;<br><br> <font color="blue">for</font> (<font color="blue">char</font> i=0; i < 5; i++)<br> {<br> cout << end[<font color="purple">i</font>] << endl;<br> Sleep(100);<br> }<br> Sleep(500);<br>}<br><br><font color="blue">char</font> Space::GameIntro()<br>{<br> ClearScreen();<br> char* intro[<font color="purple">8</font>];<br><br> intro[<font color="purple">0</font>] = <font color="darkred">" - This is the beta version of the game caled Space -"</font>;<br> intro[<font color="purple">1</font>] = <font color="darkred">" Controls:"</font>;<br> intro[<font color="purple">2</font>] = <font color="darkred">" E = left"</font>;<br> intro[<font color="purple">3</font>] = <font color="darkred">" R = right"</font>;<br> intro[<font color="purple">4</font>] = <font color="darkred">" U = Shoot"</font>;<br> intro[<font color="purple">5</font>] = <font color="darkred">" Q = Exit"</font>;<br> intro[<font color="purple">6</font>] = <font color="darkred">" Press Q anytime during the game to exit."</font>;<br> intro[<font color="purple">7</font>] = <font color="darkred">" To move left or right use the E and R keys, and to shoot use the U key."</font>;<br><br> <font color="blue">for</font> (<font color="blue">char</font> i=0; i < 8; i++)<br> {<br> cout << intro[<font color="purple">i</font>] << endl;<br> Sleep(30);<br> }<br><br> cout << <font color="darkred">"Press S to begin game…"</font> << endl;<br> <br> <font color="blue">short</font> chr=0;<br> <br> <font color="blue">do</font><br> {<br> chr = _getch();<br> chr = toupper(chr);<br> <font color="blue">if</font>(chr == ''Q'')<br> {<br> <font color="blue">return</font> ''Q'';<br> }<br><br> } <font color="blue">while</font>(chr != ''S'');<br> <font color="blue">return</font> ''1'';<br>}<br><br><font color="blue">void</font> Space::gotoxy(<font color="blue">int</font> X, <font color="blue">int</font> Y)<br>{<br>COORD coord;<br>coord.X = X;<br>coord.Y = Y;<br><br>HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);<br>SetConsoleCursorPosition(hConsole, coord);<br>}<br><br><font color="blue">int</font> main()<br>{<br> Space NewGame;<br> NewGame.SetSpaceStd();<br> NewGame.StartGame();<br> <font color="blue">return</font> 0;<br>}<br> </pre></DIV><!–ENDSCRIPT–><br><br>So now you can tell me exactly what to do in the different member functions or loops <img src="smile.gif" width=15 height=15 align=middle>
__asm in c++
Well...Iguess it is better if I post the code:
Well...
I know about pointers but I am not sure what part of the code you are talking about. make the "space array"(string) a pointer? Well if anyone can tell me that, I''d be more than happy!
Thx in advance!!!
I know about pointers but I am not sure what part of the code you are talking about. make the "space array"(string) a pointer? Well if anyone can tell me that, I''d be more than happy!
Thx in advance!!!
You could try doing something like this:
#include <string.h>
char screenoutput[1971] = "";
for (i=0; i < 26; i++)
{
for (char j=0; j < 72; j++)
{
gotoxy(j,i+3);
screenouput.push_back(space[j]);
}
}
puts (screenoutput);
What this does is, instead of calling cout 1971 times, which is slow, you push the value of space[][] onto a string, then output the whole string at once using the puts call (which I found out all about using google
[edited by - the_dannobot on March 17, 2003 3:18:45 PM]
#include <string.h>
char screenoutput[1971] = "";
for (i=0; i < 26; i++)
{
for (char j=0; j < 72; j++)
{
gotoxy(j,i+3);
screenouput.push_back(space[j]);
}
}
puts (screenoutput);
What this does is, instead of calling cout 1971 times, which is slow, you push the value of space[][] onto a string, then output the whole string at once using the puts call (which I found out all about using google
[edited by - the_dannobot on March 17, 2003 3:18:45 PM]
well, I''ve tried the push_back, but I get this error:
error C2228: left of ''.push_back'' must have class/struct/union type
anyone know what to do?
error C2228: left of ''.push_back'' must have class/struct/union type
anyone know what to do?
All the push_back function does is concatenate two strings. There are several ways to accomplish this, you could try:
screenoutput.append(space[j]);
or:
screenoutput += space[j];<br> </i>
screenoutput.append(space[j]);
or:
screenoutput += space[j];<br> </i>
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement