C语言精品游戏主角和怪物源码

//C语言多线程-主角和怪物

#include

#include

#define bool int //定义int变量为bool变量,bool不是真就是假

int a=0,b=20;//主角的坐标

int x=1,y=0;//怪物的坐标

int i=1;//i值为真

HANDLE hMutex;

//1.坐标

void GamePosition(HANDLE g_hout,int x,int y)

{

COORD pos;//点的结构体

pos.X=x;//横坐标

pos.Y=y;//纵坐标

SetConsoleCursorPosition(g_hout,pos);

//设置控制平台光标位置

}

DWORD WINAPI Func(LPVOID lpParamter)//多线程的功能函数6.线程是画怪物

{

HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);//7.拿到这张纸

WaitForSingleObject(hMutex, INFINITE);//13.自己进来,自己用洗手间

GamePosition(hout,x,y),printf("");//8.在纸上画怪物

ReleaseMutex(hMutex);//14.放弃使用权

while(1)//9.怪物在横坐标为从0-10依次循环移动

{

if(x>=0&&i==1)

{

printf(" ");

GamePosition(hout,++x,y);

printf("");

Sleep(1000);

if(x==10)

i=0;//i为假

}

else if(x

{

printf(" ");

GamePosition(hout,--x,y);

printf("");

Sleep(1000);

if(x==0)

i=1;

}

}

return 0;

}

int main()

{

HANDLE hThread = CreateThread(NULL, 0, Func, NULL, 0, NULL);//5.创建线程

hMutex = CreateMutexA(NULL, FALSE, "123");//创建互斥锁(量)//10.关上洗手间

HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);//2.拿到这张纸

WaitForSingleObject(hMutex, INFINITE);//11.等待你的同事出来 15步接着

GamePosition(hout,a,b),printf("☆");//3.在纸上画主角

ReleaseMutex(hMutex);//12.同事出来了,放弃了洗手间的使用权

while(1)

{

if(kbhit())

switch(getch())//控制左右 4.主角上下左右移动

{

case 'w':

case 'W':

if(b>3)GamePosition(hout,a,b),printf(" "),GamePosition(hout,a,--b),printf("☆");

break;

case 's':

case 'S':

if(b

break;

case 'a':

case 'A':

if(a>0)printf(" "),GamePosition(hout,--a,b),printf("☆");

break;

case 'd':

case 'D':

if(a

break;

}

}

CloseHandle(hThread);

system("pause");

return 0;

}

扫雷游戏代码源码

#include

#include

#include

int main (){

int delta[8][2] = {{-1,-1},{-1,0},{-1,1},,,,,};

int row =0,col = 0,num = 0;

char map[10][10] = ;

char show[10][10] = ;

srand(time(0));

for(row = 0;row

for(col = 0;col

map[row][col] = '0';

}

}

do{

row = rand() % 10;

col = rand() % 10;

if(map[row][col] == '0'){

map[row][col] = 'x';

num++;

}

}while(num

for (row = 0;row

for (col = 0;col

if(map[row][col] != 'x'){

int cnt = 0;

for (num = 0;num

if(row + delta[num][0]

continue;

}

if(row + delta[num][0] > 9){

continue;

}

if(col + delta[num][1]

continue;

}

if(col + delta[num][1] > 9){

continue;

}

if(map[row + delta[num][0]][col + delta[num][1]]== 'x'){

cnt++;

}

}

map[row][col] = '0' + cnt;

}

}

}

for (row = 0;row

for(col = 0;col

printf("* ");

}

printf("\n");

}

num = 0;

int x,y;

do{

printf("please enter the coordinate of array:");

scanf("%d%d",&x,&y);

if(map[x-1][y-1] == '0'){

for (num = 0;num

if(x-1 + delta[num][0]

continue;

}

if(x-1 + delta[num][0] > 9){

continue;

}

if(y -1+ delta[num][1]

continue;

}

if(y-1 + delta[num][1] > 9){

continue;

}

}

}

if (map[x-1][y-1]!= 'x'&&map[x-1][y-1] != '0'){

for (num = 0;num

int cnt = 0;

if(x-1 + delta[num][0]

continue;

}

if(x-1 + delta[num][0] > 9){

continue;

}

if(y-1 + delta[num][1]

continue;

}

if(y-1 + delta[num][1] > 9){

continue;

}

if( map[x -1 + delta[num][0]][y -1+ delta[num][1]] != 'x'){

}

}

}

if(map[x-1][y-1] == 'x') {

printf("game over!\n");

for (row = 0;row

for(col = 0;col

printf("%c ",map[row][col]);

}

printf("\n");

}

return 0;

}

system("cls");

printf("mine sweeping:\n");

for (row = 0;row

for(col = 0;col

if (show[row][col] == 1)

{

printf("%c ", map[row][col]);

}

else

{

printf("* ");

}

}

printf("\n");

}

num = 0;

for (row = 0;row

for(col = 0;col

if (show[row][col] == 1 )

{

num++;

}

}

}

printf("num:%d\n",num);

}while(num

printf("you win!");

return 0;

}

更多推荐

c 语言游戏代码大全,C语言经典游戏代码