|

楼主 |
发表于 2009-11-19 11:57:00
|
显示全部楼层
Re:Tom,Jerry和奶酪
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include<iostream>
#include<ctime>
#include<stack>
//////////////////////////////////
//功能:移动光标到指定的X,Y的位置
//参数:iX ----- 列坐标
// iY ----- 行坐标
//////////////////////////////////
void MoveCursorTo(int iX,int iY)
{
HANDLE hStd = GetStdHandle(STD_OUTPUT_HANDLE);
COORD crPlayer = {iX,iY};
SetConsoleCursorPosition(hStd, crPlayer);
}
////////////////////////////////
//用一伪随机二维数组转化成地窖
//其中砖头‘■’《==Tom和Jerry都不能通过。
//砖头‘□’《==只能Tom可以通过。
//‘★’表示奶酪。
//‘♀’表示TOM.
//‘♂’表示Jerry。
///////////////////////////////
void main(void)
{
int iMap[24][39];
srand(time(0));
for (int i=0; i<24; ++i)
{
for (int j=0; j<39; ++j)
{
if ((i==0) || (j==0) || (i==24-1) || (j==39-1))
{
iMap[j] =1;
continue;
}
if (rand() % 100<69)
iMap[j] =0;
else
if (rand() % 100<75)
iMap[j]=1;
else
iMap[j]=2;
}
iMap[21][36]=3;
}
for(int ni = 0; ni < 24; ni++)
{//row
for(int nj = 0; nj < 39; nj++)
{
if(iMap[ni][nj] == 1)
{
printf("■");
}
else
if(iMap[ni][nj]==2)
{
printf("□");
}
else
if(iMap[ni][nj]==3)
{
printf("★");
}
else
{
printf(" ");
}
}
printf("\n");
}
//////////////////万恶分割线///////////////////////////////TOM移动///////////////////////////////////////////////////////
int iRow = 2,iCol =2; //定义人物的坐标
int iInput = 0;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
bool bRun = true;//表示程序继续运行
while(bRun)
{
iInput = _getch();
if(iInput == 27) //ESC键
break;
if(iInput == 224)//控制键
{
iInput = _getch();
switch(iInput)
{
case 75://left
{
if(iMap[iRow][iCol - 1] == 3)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iCol -= 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
MoveCursorTo(0,39);
printf("Tom拿到了奶酪,你赢啦!\n");
bRun = false; //结束循环
break;
}
if(iMap[iRow][iCol - 1] == 0)
{
if(iMap[iRow][iCol] == 0)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iCol -= 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow][iCol - 1] == 0)
{
if(iMap[iRow][iCol] == 2)
{
MoveCursorTo(iCol * 2,iRow);
printf("□");
iCol -= 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow][iCol - 1] == 2)
{
if(iMap[iRow][iCol] == 0)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iCol -= 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow][iCol - 1] == 2)
{
if(iMap[iRow][iCol] == 2)
{
MoveCursorTo(iCol * 2,iRow);
printf("□");
iCol -= 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
}
break;
case 72://up
{
if(iMap[iRow - 1][iCol] == 3)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iRow -= 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
MoveCursorTo(0,39);
printf("Tom拿到了奶酪,你赢啦!\n");
bRun = false; //结束循环
break;
}
if(iMap[iRow - 1][iCol] == 0)
{
if(iMap[iRow][iCol] == 0)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iRow -= 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow - 1][iCol] == 0)
{
if(iMap[iRow][iCol] == 2)
{
MoveCursorTo(iCol * 2,iRow);
printf("□");
iRow -= 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow - 1][iCol] == 2)
{
if(iMap[iRow][iCol] == 0)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iRow -= 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow - 1][iCol] == 2)
{
if(iMap[iRow][iCol] == 2)
{
MoveCursorTo(iCol * 2,iRow);
printf("□");
iRow -= 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
}
break;
case 77://right
{
if(iMap[iRow][iCol + 1] == 3)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iCol += 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
MoveCursorTo(0,39);
printf("Tom拿到了奶酪,你赢啦!\n");
bRun = false; //结束循环
break;
}
if(iMap[iRow][iCol + 1] == 0)
{
if(iMap[iRow][iCol] == 0)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iCol += 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow][iCol + 1] == 0)
{
if(iMap[iRow][iCol] == 2)
{
MoveCursorTo(iCol * 2,iRow);
printf("□");
iCol += 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow][iCol + 1] == 2)
{
if(iMap[iRow][iCol] == 0)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iCol += 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow][iCol + 1] == 2)
{
if(iMap[iRow][iCol] == 2)
{
MoveCursorTo(iCol * 2,iRow);
printf("□");
iCol += 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
}
break;
case 80://down
{
if(iMap[iRow + 1][iCol] == 3)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iRow += 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
MoveCursorTo(0,39);
printf("Tom拿到了奶酪,你赢啦!\n");
bRun = false; //结束循环
break;
}
if(iMap[iRow + 1][iCol] == 0)
{
if(iMap[iRow][iCol] == 0)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iRow += 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow + 1][iCol] == 0)
{
if(iMap[iRow][iCol] == 2)
{
MoveCursorTo(iCol * 2,iRow);
printf("□");
iRow += 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow + 1][iCol] == 2)
{
if(iMap[iRow][iCol] == 0)
{
MoveCursorTo(iCol * 2,iRow);
printf(" ");
iRow += 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
if(iMap[iRow + 1][iCol] == 2)
{
if(iMap[iRow][iCol] == 2)
{
MoveCursorTo(iCol * 2,iRow);
printf("□");
iRow += 1;
MoveCursorTo(iCol * 2,iRow);
printf("♀");
}
}
}
break;
}
}
//////////////////万恶分割线///////////////////////////////Jerry移动///////////////////////////////////////////////////////
}
}
|
|