__asm in c++

Started by
13 comments, last by jarod83 21 years, 1 month ago
Well...Iguess it is better if I post the code:


  #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 &lt;&lt; endl;<br>	}<br>	for (i=0; i &lt; 26; i++)<br>	{<br>		for (int j=0; j &lt; 72; j++)<br>		{<br>			cout &lt;&lt; space[j];<br>		}<br>		cout &lt;&lt; endl;<br>	}<br><br><br>	for (int i=0; i &lt; 3; i++)<br>	{<br>		for (int j=0; j &lt; 72; j++)<br>		{<br>			gotoxy(j,i);<br>			cout &lt;&lt; pre_print[j];<br>		}<br>		cout &lt;&lt; endl;<br>	}*/</font><br><br>	<font color="blue">for</font> (<font color="blue">char</font> i=0; i &lt; 3; i++)<br>	{<br>		<font color="blue">for</font> (<font color="blue">char</font> j=0; j &lt; 72; j++)<br>		{<br>			gotoxy(j,i);<br>			cout &lt;&lt; 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 &lt; 26; i++)<br>	{<br>		<font color="blue">for</font> (<font color="blue">char</font> j=0; j &lt; 72; j++)<br>		{<br>			gotoxy(j,i+3);<br>			cout &lt;&lt; space[<font color="purple">i</font>][<font color="purple">j</font>]; <br>		}<br>		cout &lt;&lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 23;)<br>	{<br>		<font color="blue">for</font> (<font color="blue">char</font> j=0; j &lt; 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 &lt; 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 &lt; 5; i++)<br>	{<br>		<font color="blue">for</font> (<font color="blue">char</font> j=0; j &lt; 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 &lt; 5; i++)<br>	{<br>		<font color="blue">for</font> (<font color="blue">char</font> j=0; j &lt; 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 &lt; 5; i++)<br>	{<br>		cout &lt;&lt; end[<font color="purple">i</font>] &lt;&lt; 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 &lt; 8; i++)<br>	{<br>		cout &lt;&lt; intro[<font color="purple">i</font>] &lt;&lt; endl;<br>		Sleep(30);<br>	}<br><br>	cout &lt;&lt; <font color="darkred">"Press S to begin game…"</font> &lt;&lt; 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>    
Advertisement
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!!!
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]
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?
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>

This topic is closed to new replies.

Advertisement