C语言实现小猫钓鱼游戏

本文实例为大家分享了C语言实现小猫钓鱼游戏的具体代码,供大家参考,具体内容如下

#include<stdio.h>

#include<time.h>

#include<string.h>

#include<stdlib.h>

#include<windows.h>

typedef struct

{

int data[3600];

int col[3600];

int top;

} stack;

typedef struct

{

int data[3600];

int col[3600];

int head;

int tail;

} queue;

queue p1, p2;

stack table;

void printmenu();

void deal();

void printp1();

void printtable();

void printzzz();

void judge(int a, int player);

void game();

void ask();

int main()

{

while(1)

{

char ch;

printmenu();

scanf("%c",&ch);

switch(ch)

{

case '1':

game();

break;

case '2':

exit(0);

default:

system("cls");

break;

}

}

return 0;

}

void printmenu()

{

printf("*****************************\n");

printf("* *\n");

printf("* *\n");

printf("* 金钩钓鱼 *\n");

printf("* *\n");

printf("* *\n");

printf("* *\n");

printf("*****************************\n");

printf("\n\n\n");

printf("游戏规则:\n");

printf("每人各拿一半的牌,然后你放1张牌,\n");

printf("他放一张牌,如跟上面的牌一样,\n");

printf("即可把当中的牌全部吃掉,\n");

printf("直至对手手上无牌为止。\n\n\n");

printf("输入1开始游戏\n");

printf("输入2退出程序\n");

}

void deal()

{

p1.head = 1;

p1.tail = 1;

p2.head = 1;

p2.tail = 1;

table.top = 0;

int i, card, book[60];

srand((unsigned)time(0));

memset(book, 0, sizeof(book));

for(i = 1; i <= 27;)

{

card = rand()%55;

if(card == 0)

continue;

else if(card >= 1 && card <= 13 && book[card] == 0)

{

p1.data[p1.tail] = card;

p1.col[p1.tail] = 1;

p1.tail++;

book[card]=1;

i++;

}

else if(card >= 14 && card <= 26 && book[card] == 0)

{

p1.data[p1.tail] = card - 13;

p1.col[p1.tail] = 2;

p1.tail++;

book[card]=1;

i++;

}

else if(card >= 27 && card <= 39 && book[card] == 0)

{

p1.data[p1.tail] = card - 26;

p1.col[p1.tail] = 3;

p1.tail++;

book[card]=1;

i++;

}

else if(card >= 40 && card <= 52 && book[card] == 0)

{

p1.data[p1.tail] = card - 39;

p1.col[p1.tail] = 4;

p1.tail++;

book[card]=1;

i++;

}

else if(card == 53)

{

p1.data[p1.tail] = card;

p1.col[p1.tail] = 5;

p1.tail++;

book[card]=1;

i++;

}

else if(card == 54)

{

p1.data[p1.tail] = card;

p1.col[p1.tail] = 5;

p1.tail++;

book[card]=1;

i++;

}

}

for(i = 1; i <= 27;)

{

card = rand()%55;

if(card == 0)

continue;

else if(card >= 1 && card <= 13 && book[card] == 0)

{

p2.data[p2.tail] = card;

p2.col[p2.tail] = 1;

p2.tail++;

book[card]=1;

i++;

}

else if(card >= 14 && card <= 26 && book[card] == 0)

{

p2.data[p2.tail] = card - 13;

p2.col[p2.tail] = 2;

p2.tail++;

book[card]=1;

i++;

}

else if(card >= 27 && card <= 39 && book[card] == 0)

{

p2.data[p2.tail] = card - 26;

p2.col[p2.tail] = 3;

p2.tail++;

book[card]=1;

i++;

}

else if(card >= 40 && card <= 52 && book[card] == 0)

{

p2.data[p2.tail] = card - 39;

p2.col[p2.tail] = 4;

p2.tail++;

book[card]=1;

i++;

}

else if(card == 53 && book[card] == 0)

{

p2.data[p2.tail] = card;

p2.col[p2.tail] = 5;

p2.tail++;

book[card]=1;

i++;

}

else if(card == 54 && book[card] == 0)

{

p2.data[p2.tail] = card;

p2.col[p2.tail] = 5;

p2.tail++;

book[card]=1;

i++;

}

}

return;

}

void printp1()

{

int i;

printf("您的牌有: \n");

for(i = p1.tail-1; i >= p1.head; i--)

{

if(p1.col[i] == 1)

{

printf("方片");

}

else if(p1.col[i] == 2)

{

printf("红桃");

}

else if(p1.col[i] == 3)

{

printf("黑桃");

}

else if(p1.col[i] == 4)

{

printf("梅花");

}

if(p1.data[i] == 11)

{

printf("J ");

}

else if(p1.data[i] == 12)

{

printf("Q ");

}

else if(p1.data[i] == 13)

{

printf("K ");

}

else if(p1.data[i] == 53)

{

printf("小王 ");

}

else if(p1.data[i] == 54)

{

printf("大王 ");

}

else

printf("%d ", p1.data[i]);

}

printf("\n\n");

return;

}

void printtable()

{

int i;

printf("桌上的牌有:\n");

if(table.top == 0)

{

printf("(无)\n");

}

for(i = 1; i <= table.top; i++)

{

if(table.col[i] == 1)

{

printf("方片");

}

else if(table.col[i] == 2)

{

printf("红桃");

}

else if(table.col[i] == 3)

{

printf("黑桃");

}

else if(table.col[i] == 4)

{

printf("梅花");

}

if(table.data[i] == 11)

{

printf("J ");

}

else if(table.data[i] == 12)

{

printf("Q ");

}

else if(table.data[i] == 13)

{

printf("K ");

}

else if(table.data[i] == 53)

{

printf("小王 ");

}

else if(table.data[i] == 54)

{

printf("大王 ");

}

else

printf("%d ", table.data[i]);

}

printf("\n\n\n");

return;

}

void printzzz()

{

system("cls");

Sleep(400);

printf("正 ");

Sleep(400);

printf("在 ");

Sleep(400);

printf("出 ");

Sleep(400);

printf("牌 ");

Sleep(400);

printf(". ");

Sleep(400);

printf(". ");

Sleep(400);

printf(". ");

Sleep(800);

judge(table.data[table.top], 1);

system("cls");

printf("玩家2 开始回合!!\n\n\n\n");

printtable();

table.top++;

table.data[table.top] = p2.data[p2.head];

table.col[table.top] = p2.col[p2.head];

p2.head++;

Sleep(600);

printf("玩 ");

Sleep(400);

printf("家 ");

Sleep(400);

printf("2 ");

Sleep(400);

printf("正 ");

Sleep(400);

printf("在 ");

Sleep(400);

printf("出 ");

Sleep(400);

printf("牌 ");

Sleep(400);

printf(". ");

Sleep(400);

printf(". ");

Sleep(400);

printf(". ");

Sleep(1000);

judge(table.data[table.top], 2);

return;

}

void judge(int a, int player)

{

int i, j, sum = 2;

if(player == 1)

{

for(i = table.top-1; i >= 1; i--, sum++)

{

if(a == table.data[i] || ((a == 53 || a == 54) && (table.data[i] == 53 || table.data[i] == 54)))

{

for(j = table.top; j >= i; j--)

{

p1.data[p1.tail] = table.data[table.top];

p1.col[p1.tail] = table.col[table.top];

p1.tail++;

table.top--;

}

break;

}

}

if(i != 0)

{

system("cls");

Sleep(400);

printf("玩 ");

Sleep(400);

printf("家 ");

Sleep(400);

printf("1 ");

Sleep(400);

printf("赢 ");

Sleep(400);

printf("了 ");

Sleep(400);

printf("%d ", sum);

Sleep(400);

printf("张");

Sleep(400);

printf("牌 ");

Sleep(400);

printf("! ");

Sleep(400);

printf("! ");

Sleep(400);

printf("! ");

Sleep(2000);

system("cls");

}

}

else if(player == 2)

{

for(i = table.top-1; i >= 1; i--, sum++)

{

if(a == table.data[i] || ((a == 53 || a == 54) && (table.data[i] == 53 || table.data[i] == 54)))

{

for(j = table.top; j >= i; j--)

{

p2.data[p2.tail] = table.data[table.top];

p2.col[p2.tail] = table.col[table.top];

p2.tail++;

table.top--;

}

break;

}

}

if(i != 0)

{

system("cls");

Sleep(400);

printf("玩 ");

Sleep(400);

printf("家 ");

Sleep(400);

printf("2 ");

Sleep(400);

printf("赢 ");

Sleep(400);

printf("了 ");

Sleep(400);

printf("%d ", sum);

Sleep(400);

printf("张");

Sleep(400);

printf("牌 ");

Sleep(400);

printf("! ");

Sleep(400);

printf("! ");

Sleep(400);

printf("! ");

Sleep(2000);

system("cls");

}

}

return;

}

void game()

{

deal();

getchar();

while(p1.head != p1.tail && p2.head != p2.tail)

{

system("cls");

int i;

printf("玩家1 开始回合!!\n\n\n\n");

printp1();

printtable();

printf("按回车来出牌\n");

getchar();

table.top++;

table.data[table.top] = p1.data[p1.head];

table.col[table.top] = p1.col[p1.head];

p1.head++;

printzzz();

}

if(p1.head == p1.tail)

{

printf("恭喜您取得了胜利!!!\n");

printf("感谢使用本程序\n");

system("pause");

}

else

{

printf("你没有牌了!");

printf("不好意思,您输了。。。\n");

printf("不要灰心,可以再来一局!!\n");

system("pause");

}

return;

}

void ask()

{

char ch;

system("cls");

printf("你确定要退出?\n");

printf("(输入y确认对出)\n");

printf("Y/N\n");

scanf("%c", &ch);

if(ch == 'y' || ch == 'Y')

{

exit(0);

}

else

{

return;

}

}

以上是 C语言实现小猫钓鱼游戏 的全部内容, 来源链接: utcz.com/z/358888.html

回到顶部