資源簡介
這是linux下的雙人彈球游戲。分服務(wù)器端和客戶端。基于socket通信。

代碼片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define?LEFT?0
#define?RIGHT?(COLS-1)
#define?TOP?1
#define?BOTTOM?(LINES-1-2)
#define?WIDE?RIGHT-LEFT+1
#define?BOARD_LENGTH???10
#define?TOTAL?3
char?BALL=?‘O‘;
char?BLANK=?‘?‘;
int?hdir;
int?vdir;
int?pos_X?;
int?pos_Y;
int?p1p2;
int?in_win;
int?in_lose;
int?left_board;
int?right_board;
int?d_left_board;
int?d_right_board;
int?is_lose=0;
int?is_win=0;
int?rsize;
int?sock;
int?delay=100;
int?ndelay;
void?moveBall();
struct?winsize?size;
int?listenfd?connfd;
int?????n;
struct?sockaddr_in?????servaddr?=?{0};
char????rbuf[128];
char????wbuf[128]?=?“hello?client“;
void?control();
void?sent_pos();
void?lose();
void?win();
FILE?*fp;
int?main(int?argcchar?**argv)
{
fp=fopen(“res.txt““w“);
ioctl(STDIN_FILENO?TIOCGWINSZ?&size);
char?wbuf[]?=?“hello?server“;
char?rbuf[128];
int?i;
p1=0;
p2=0;
struct?sockaddr_in server?=?{0};
struct?timeval?timeo;
char?cmd[200];?
timeo.tv_sec??=?0;
timeo.tv_usec?=?1000?*?1000; //
socklen_t?len?=?sizeof(timeo);
?? if(?argc?!=?2)
????????{
?? printf(“usage:?./client?\n“);
?? return?-1;
}
sock?=?socket(AF_INET?SOCK_STREAM?0);
if(sock?0)
{
perror(“Create?TCP?Socket“);
return?-1;
}
setsockopt(sock?SOL_SOCKET?SO_SNDTIMEO?&timeo?len);
server.sin_family?=?AF_INET;
server.sin_port?=?htons(30000);
inet_pton(AF_INET??argv[1]?&(server.sin_addr));
int?res?=?connect(sock?(struct?sockaddr*)&server?sizeof(server));
if?(res?0)
{
if(res?==?EINPROGRESS)
perror(“connecting?stream?socket?time?out:“);
else
perror(“connecting?stream?socket?error:“);
close(sock);
return?-1;
}
else
{
printf(“Connect?Server@%s\n“argv[1]);
//for(i=0;i<100;i++)
//{???????
strcpy(wbuf“got“);
int?wsize?=?send(sockwbufsizeof(wbuf)0);
if(wsize<=0)
{
perror(“write?error:“);
close(sock);
return?-1;
}
//printf(“1111111i=%d\n“i);
rsize=recv(sockrbufsizeof(rbuf)0);
if(rsize>0)
{
rbuf[rsize]=‘\0‘;
//printf(“recv?msg?from?server:?%s\n“rbuf);
//sprintf(cmd?“%s“?rbuf);
?? //system(cmd);?
if?(rbuf[0]==‘s‘)
{
initscr();
crmode();
noecho();
control();
endwin();
}
}
if(rsize<0)
{
close(sock);
perror(“read?error:“);
return?-1;
}
//}
close(sock);?fclose(fp);
return?0;
}
}
void?init(){
int?ij;
in_win=0;
in_lose=0;
clear();
//init?ball
pos_X?=size.ws_col-(0.5*COLS+1);
pos_Y?=size.ws_row-(0.5*size.ws_row+1);?
hdir=-1;
vdir=1;
//init?board
left_board=0.5*COLS-1-0.5*BOARD_LENGTH;
right_board=left_board+BOARD_LENGTH-1;
for(i=left_board;i<=right_board;i++){
move(BOTTOMi);
addch(‘=‘);
}
d_left_board=0.5*
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-11-22?03:05??netBallGame_1\
?????文件???????20101??2011-11-22?03:58??netBallGame_1\c2
?????文件???????12697??2011-11-15?07:56??netBallGame_1\c2.c
?????文件?????????481??2011-12-09?00:22??netBallGame_1\ReadMe.txt
?????文件???????20312??2011-11-22?04:00??netBallGame_1\s2
?????文件???????12249??2011-11-22?04:00??netBallGame_1\s2.c
評論
共有 條評論