资源简介
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
- 上一篇:pl/0编译器 语法分析
- 下一篇:linux my_ls
相关资源
- PID_AutoTune_v0.rar
- vspd7.2.308.zip
- 价值2k的H漫画小说系统
- Pythonamp;课堂amp;笔记(高淇amp;400;集第
- ddos压力测试工具99657
- UML建模大全
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- FTP课程设计(服务端+客户端)
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- oracle数据迁移项目实施方案
- Web Api 通过文件流 文件到本地
- Visio图标-最新最全的网络通信图标库
- Spire API文档
- OpenGL参考手册
- Python中Numpy库最新教程
- SPD博士V5.3.exe
- 直流无刷电机方波驱动 stm32 例程代码
- layui后台管理模板
- 仿知乎界面小程序源代码
- 云平台-阿里云详细介绍
- photoshop经典1000例
- scratch垃圾分类源码(最终版本).sb
- IAR ARM 7.8破解
- TI CCS V5.4 安装步骤及破解文件
- 松下plc FP-XH的驱动
- 局域网硬件信息收集工具
- 加快Windows XP操作系统开机速度
评论
共有 条评论