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<20)gameposition(hout,a,b),printf(‘>
break;
case ‘a’:
case ‘A’:
if(a>0)printf(‘ ‘),GamePosition(hout,–a,b),printf(‘☆’);
break;
case ‘d’:
case ‘D’:
if(a<20)printf(‘>
break;
}
}
CloseHandle(hThread);
system(‘pause’);
return 0;
}

掃雷遊戲代碼源碼


#include
#include
#include
int main (){
int delta[8][2] = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int row =0,col = 0,num = 0;
char map[10][10] = {0};
char show[10][10] = {0};
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 < 10;col=””>
printf(‘* ‘);
}
printf(‘n’);
}
num = 0;
int x,y;
do{
printf(‘please enter the coordinate of array:’);
scanf(‘%d%d’,&x,&y);
show[x-1][y-1] = 1;
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;
}
show[x-1+delta[num][0]][y-1+delta[num][1]] = 1;
}
}
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’){
show[x-1 + delta[num][0]][y -1+ delta[num][1]] = 1 ;
}
}
}
if(map[x-1][y-1] == ‘x’) {
printf(‘game over!n’);
for (row = 0;row <>
for(col = 0;col < 10;col=””>
printf(‘%c ‘,map[row][col]);
}
printf(‘n’);
}
return 0;
}
system(‘cls’);
printf(‘mine sweeping:n’);
for (row = 0;row <>
for(col = 0;col < 10;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 < 10;col=””>
if (show[row][col] == 1 )
{
num++;
}
}
}
printf(‘num:%dn’,num);
}while(num <>
printf(‘you win!’);
return 0;
}
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/269187.html
微信掃一掃
支付寶掃一掃