资源简介

这是linux下的双人弹球游戏。分服务器端和客户端。基于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

评论

共有 条评论