• 大小: 14KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: C/C++
  • 标签: xiaopeng  

资源简介

Linux下c语言编写的五子棋,可在终端上运行,通过wads加回车可以控制光标的位置,空格键加回车可以在当前位置下棋。实现局域网内的client/server游戏对战。

资源截图

代码片段和文件信息

/****************************************
 * @File name: client.c
 * @Author: xiaopeng
 * @Version: 1.1
 * @Date: 2018-8-23
 * Description: A game of chess
 ****************************************/

#include “chess.h“

//flush chess
void print_map(int (*a)[N])
{
int ij;
for(i=0; i {
for(j=0; j {
switch(a[i][j])
{
case 0: printf(“. “); break;  // 0 表示棋盘
case 1: printf(“| “); break;  // 1 表示光标
case 2: printf(“o “); break;  // 2 表示黑棋
case 3: printf(“● “); break;  // 3 表示白棋
case 4: printf(“① “); break;  // 4 表示光标在白棋上面
case 5: printf(“② “); break;  // 5 表示光标在黑棋上面
}
}
printf(“\n“);
}
}

//deal key
int deal_key(int (*a)[N]int *xint *yint *flag)
{
char get_ch = getchar();
switch(get_ch)
{
case ‘w‘:
{
if(*x > 0) (*x) = (*x)-1;   //光标向上移动
if(a[*x][*y] == 0) a[*x][*y] = 1;     //空白处光标为1 
if(a[*x][*y] == 2) a[*x][*y] = 4;   //白棋上光标为4
if(a[*x][*y] == 3) a[*x][*y] = 5;     //黑棋上光标为5

if(a[*x+1][*y] == 1) a[*x+1][*y] = 0; //消除脚印
if(a[*x+1][*y] == 4) a[*x+1][*y] = 2; //消除脚印
if(a[*x+1][*y] == 5) a[*x+1][*y] = 3; //消除脚印
}break;

case ‘s‘:
{
if(*x < 19) (*x) = (*x)+1;
if(a[*x][*y] == 0) a[*x][*y] = 1;     //空白处光标为1 
if(a[*x][*y] == 2) a[*x][*y] = 4;   //白棋上光标为4
if(a[*x][*y] == 3) a[*x][*y] = 5;     //黑棋上光标为5

if(a[*x-1][*y] == 1) a[*x-1][*y] = 0;
if(a[*x-1][*y] == 4) a[*x-1][*y] = 2;
if(a[*x-1][*y] == 5) a[*x-1][*y] = 3;
}break;

case ‘a‘:
{
if(*y > 0) (*y) = (*y)-1;
if(a[*x][*y] == 0) a[*x][*y] = 1;     //空白处光标为1 
if(a[*x][*y] == 2) a[*x][*y] = 4;   //白棋上光标为4
if(a[*x][*y] == 3) a[*x][*y] = 5;     //黑棋上光标为5

if(a[*x][*y+1] == 1) a[*x][*y+1] = 0;
if(a[*x][*y+1] == 4) a[*x][*y+1] = 2;
if(a[*x][*y+1] == 5) a[*x][*y+1] = 3;
}break;
case ‘d‘:
{
if(*y < 19) (*y) = (*y)+1;
if(a[*x][*y] == 0) a[*x][*y] = 1;     //空白处光标为1 
if(a[*x][*y] == 2) a[*x][*y] = 4;   //白棋上光标为4
if(a[*x][*y] == 3) a[*x][*y] = 5;     //黑棋上光标为5

if(a[*x][*y-1] == 1) a[*x][*y-1] = 0;
if(a[*x][*y-1] == 4) a[*x][*y-1] = 2;
if(a[*x][*y-1] == 5) a[*x][*y-1] = 3;
}break;

case 32:   
{
if(a[*x][*y] == 1)
{
if((*flag) == 1) 
a[*x][*y] = 2;
else a[*x][*y] = 3;
*flag = !(*flag);
}
}break;
}
return 0;
}

//judge victory
int judge_victory(int (*a)[N]int *xint *yint *flag)
{
int i = 0j = 0;
int temp = (3-!(*flag));
for(i=0j=*y; i {
if(temp==a[i][j]&&temp==a[i+1][j]&&temp==a[i+2][j]&&temp==a[i+3][j]&&temp==a[i+4][j])  //五子连珠
return 1; 
}
for(i=*xj=0; j {
if(temp==a[i][j]&&temp==a[i][j+1]&&temp==a[i][j + 2]&&temp==a[i][j+3]&&temp==a[i][j+4])
return 1;
}
//找到左下最后一个元素的行标扫描落子所在正对角线
for(i=(*x)+(*y)j=0; i>=0; i--j++)
{
if(temp==a[i][j]&&temp==a[i-1][j+1]&&temp==a[i-2][j+2]&&temp==a[i-3][j+3]&&temp==a[i-4][j+4])
return 1;
}
//先找到左上第一个元素的列标,扫描落子所在副对角线上
for(i=(*x)-(*y)j=0; j {
if(temp==a[i][j]&&temp==a[i+1][j

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     12288  2018-08-24 12:02  chess\client\.跟我一起学Makefile.swp

     文件       3521  2018-09-07 15:27  chess\client\chess.c

     文件        234  2018-08-29 14:05  chess\client\chess.h

     文件       6616  2018-09-07 18:07  chess\client\chess.o

     文件        578  2018-09-07 15:57  chess\client\client.c

     文件        304  2018-09-07 16:06  chess\client\client.h

     文件       2160  2018-09-07 18:07  chess\client\client.o

     文件        137  2018-08-24 17:53  chess\client\define.h

     文件       1768  2018-09-07 16:37  chess\client\main.c

     文件       4008  2018-09-07 18:07  chess\client\main.o

     文件        184  2018-09-07 15:39  chess\client\makefile

     文件       3526  2018-09-07 16:01  chess\server\chess.c

     文件        235  2018-09-07 16:02  chess\server\chess.h

     文件       6616  2018-09-07 18:07  chess\server\chess.o

     文件        137  2018-08-24 17:51  chess\server\define.h

     文件       1582  2018-09-07 16:37  chess\server\main.c

     文件       3904  2018-09-07 18:07  chess\server\main.o

     文件        184  2018-09-07 15:53  chess\server\makefile

     文件        752  2018-09-07 16:04  chess\server\server.c

     文件        335  2018-09-07 16:07  chess\server\server.h

     文件       2312  2018-09-07 18:07  chess\server\server.o

     目录          0  2018-09-09 13:30  chess\client

     目录          0  2018-09-09 13:30  chess\server

     目录          0  2018-09-09 13:30  chess

----------- ---------  ---------- -----  ----

                51381                    24


评论

共有 条评论

相关资源