• 大小: 0.02M
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-01
  • 语言: 其他
  • 标签: 其他  

资源简介

uif65d.zip

资源截图

代码片段和文件信息

//坦克打飞机(双人网络对战版)

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include                             //需要产生随机数,加载时间头文件
#include “SDL.h“
#ifdef macintosh                             //对导入数据时分隔符的控制
#define DIR_SEP “:“
#define DIR_CUR “:“
#else
#define DIR_SEP “/“
#define DIR_CUR ““
#endif
#define DATAFILE(X) DIR_CUR “data“ DIR_SEP X
#define frameS_PER_SEC 10                  //每秒钟的帧数
#define cannon_SPEED 5                   //大炮运动速度
#define MAX_SHOTS 2                       //最多可以发射多少发炮弹
#define SHOT_SPEED 10                      //炮弹的速度
#define MAX_airs 2                       //最多出现多少架飞机
#define AIR_SPEED 5                       //飞机的速度
#define AIR_ODDS (1*frameS_PER_SEC) //剩下的飞机数
#define EXPLODE_TIME 4 //爆炸时间

typedef struct { //对象结构体
int alive; //是否存活标志
int facing; //运动方向
int x y; //坐标
SDL_Surface *image; //图像指针
} object;
SDL_Surface *screen; //屏幕指针
SDL_Surface *background; //背景指针
object my_cannon; //大炮对象
object remote_cannon; //对手大炮对象
int reloading; //重新加载标志
object shots[MAX_SHOTS]; //炮弹对象
object airs[MAX_airs]; //飞机对象
object explosions[MAX_airs+1]; //爆炸对象
#define MAX_UPDATES 3*(1+MAX_SHOTS+MAX_airs)//最大更新次数
int numupdates = 0; //更新次数的变量
SDL_Rect srcupdate[MAX_UPDATES]; //源目标更新
SDL_Rect dstupdate[MAX_UPDATES]; //目标更新
struct blit { //定义快速重绘对象结构体
SDL_Surface *src;
SDL_Rect *srcrect;
SDL_Rect *dstrect;
} blits[MAX_UPDATES];

//定义 发射,坐,右 宏
#define CMD_SHOOT 1
#define CMD_LEFT 2
#define CMD_RIGHT 3
#define CMD_QUIT 4
#define CMD_CONNECT 5

#define SERVIP “127.0.0.1“ //服务器IP
#define SERVPORT 8888 /*服务器监听端口号*/
#define BACKLOG 1 /*最大同时连接请求数*/
#define STDIN 0 /*标准输入文件描述符*/

//网络通信相关变量
fd_set rfd_set wfd_set efd_set;/*被select()监视的读、写、异常处理的文件描述符集合*/
int ret; /*与client连接的结果*/
struct timeval timeout; /*本次select的超时结束时间*/
int serv_fd airs_fd;
int sin_size;
struct sockaddr_in serv_addr;/*本机地址信息客户地址信息*/
int cmd; //指令传输缓冲
int recvbytes;

void InitNetwork() //初始化网络
{
if ((serv_fd = socket(AF_INET SOCK_STREAM 0)) == -1) { /*错误检测*/
perror(“socket“);
exit(-1);
}
/* 填充 sockaddr结构  */
bzero(&serv_addr sizeof(struct sockaddr_in));
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVPORT);
inet_aton(SERVIP &serv_addr.sin_addr);
/*serv_addr.sin_addr.s_addr=inet_addr(“192.168.0.101“);*/

if (connect(serv_fd (struct sockaddr *)&serv_addr sizeof(struct sockaddr)) == -1) 
{
/*错误检测*/
perror(“connect“);
exit(1);
}
fcntl(serv_fd F_SETFD O_NONBLOCK);
cmd = 5;
send(serv_fd &cmd sizeof(cmd) 0);
usleep(100 * 1000); //延时100毫秒,等待服务端飞机传输套接字初始化完毕
}

SDL_Surface *LoadImage(char *datafile) //加载图片函数
{
SDL_Surface *image *surface;
image = SDL_LoadBMP(datafile); //用SDL_LoadBMP()函数加载图片
if ( image == NULL )
{
fprintf(stderr “Couldn‘t load image %s: %s\n“

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-07-21 10:36  新建文件夹\
     目录           0  2014-07-21 10:35  新建文件夹\data\
     文件       29070  2008-08-26 00:33  新建文件夹\data\air.bmp
     文件      915894  2008-08-26 00:33  新建文件夹\data\background.bmp
     文件       12986  2008-08-26 00:33  新建文件夹\data\cannon.bmp
     文件       18110  2008-08-26 00:33  新建文件夹\data\explosion.bmp
     文件        3694  2008-08-26 00:33  新建文件夹\data\shot.bmp
     文件       18950  2014-07-21 10:35  新建文件夹\game_c.c
     文件       19880  2014-07-21 10:35  新建文件夹\game_s.c
     文件         197  2014-07-21 10:40  新建文件夹\游戏说明.txt

评论

共有 条评论