# include "tanke.h"
/////////////////////////////////////////////////////主函数程序
void ZhengTiLaoWang(pTanKe ptanke,int (*x_8)[2][3],int (*x_9)[2][3],int (*x_10)[2][3],int (*x_11)[2][3],
bool *exist_laowang,bool *exist1, int*gold, int*d,int*tilelaowang_x,int*tilelaowang_y,
int *tileHong_x1,int *tileHong_y1,int *tileBai_x4,int *tileBai_y4,bool*live9)
{
if(*exist_laowang) LaoWang(&(*tilelaowang_x), &(*tilelaowang_y));//老王
if(*exist_laowang) *exist_laowang = DBoomBig(ptanke[0].d, &(*tilelaowang_x), &(*tilelaowang_y), &(*d));//老王被打爆
if(*exist_laowang) *exist_laowang = DBoomBig(ptanke[1].d, &(*tilelaowang_x), &(*tilelaowang_y), &(*d));//老王被打爆
if(*exist_laowang) *exist_laowang = DBoomBig(ptanke[2].d, &(*tilelaowang_x), &(*tilelaowang_y), &(*d));//老王被打爆
if(*exist_laowang) *exist_laowang = DBoomBig(ptanke[3].d, &(*tilelaowang_x), &(*tilelaowang_y), &(*d));//老王被打爆
if(*exist_laowang) *exist_laowang = DBoomBig(ptanke[4].d, &(*tilelaowang_x), &(*tilelaowang_y), &(*d));//老王被打爆
if(*exist_laowang) *exist_laowang = DBoomBig(ptanke[5].d, &(*tilelaowang_x), &(*tilelaowang_y), &(*d));//老王被打爆
if(*exist_laowang) *exist_laowang = DBoomBig(ptanke[6].d, &(*tilelaowang_x), &(*tilelaowang_y), &(*d));//老王被打爆
if(*exist_laowang) *exist_laowang = DBoomBig(x_8, &(*tilelaowang_x), &(*tilelaowang_y), &(*d));//老王被打爆
if(*exist1) tileHong(&(*tileHong_x1), &(*tileHong_y1));//红色障碍物
if(*exist1) *exist1 = DBoomBig(ptanke[0].d, &(*tileHong_x1), &(*tileHong_y1), &(*d));//红色障碍物被打爆
if(*exist1) *exist1 = DBoomBig(ptanke[1].d, &(*tileHong_x1), &(*tileHong_y1), &(*d));//红色障碍物被打爆
if(*exist1) *exist1 = DBoomBig(ptanke[2].d, &(*tileHong_x1), &(*tileHong_y1), &(*d));//红色障碍物被打爆
if(*exist1) *exist1 = DBoomBig(ptanke[3].d, &(*tileHong_x1), &(*tileHong_y1), &(*d));//红色障碍物被打爆
if(*exist1) *exist1 = DBoomBig(ptanke[4].d, &(*tileHong_x1), &(*tileHong_y1), &(*d));//红色障碍物被打爆
if(*exist1) *exist1 = DBoomBig(ptanke[5].d, &(*tileHong_x1), &(*tileHong_y1), &(*d));//红色障碍物被打爆
if(*exist1) *exist1 = DBoomBig(ptanke[6].d, &(*tileHong_x1), &(*tileHong_y1), &(*d));//红色障碍物被打爆
if(*exist1) *exist1 = DBoomBig(x_8, &(*tileHong_x1), &(*tileHong_y1), &(*d));//红色障碍物被打爆
if(*gold >100 && !(*live9))
{
*tileBai_x4 = 304;
*tileBai_y4 = 416;
tileBai(&*tileBai_x4, &*tileBai_y4);//!!
}
if (!*live9)QZBoom(ptanke[0].d, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
if (!*live9)QZBoom(ptanke[1].d, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
if (!*live9)QZBoom(ptanke[2].d, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
if (!*live9)QZBoom(ptanke[3].d, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
if (!*live9)QZBoom(ptanke[4].d, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
if (!*live9)QZBoom(ptanke[5].d, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
if (!*live9)QZBoom(ptanke[6].d, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
if (!*live9)QZBoom(x_8, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
if (!*live9)QZBoom(x_9, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
if (!*live9)QZBoom(x_10, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
if (!*live9)QZBoom(x_11, &(*tileBai_x4), &(*tileBai_y4));//白色障碍物被打
return;
}
void ZhengTiFangXiang(pTanKe ptanke, pBaiZhuan pbaizhuan, pHongZhuan phongzhuan,int (*x_8)[2][3],
bool *live8,bool *live9,
int*r,int*x8,int*y8,int*x9,int*y9,
int *z8,
int *o,int *ydsd)
{
(*r)++;
if(ptanke[0].live) JFangXiang(ptanke[0].d, &ptanke[0].x,&ptanke[0].y, &ptanke[0].z,pbaizhuan,phongzhuan,&*ydsd);
if(ptanke[1].live) DFangXiang(ptanke[1].d, &ptanke[1].x,&ptanke[1].y, &ptanke[1].z,&*r);
if(ptanke[2].live) DFangXiang(ptanke[2].d, &ptanke[2].x,&ptanke[2].y, &ptanke[2].z,&*r);
if(ptanke[3].live) DFangXiang(ptanke[3].d, &ptanke[3].x,&ptanke[3].y, &ptanke[3].z,&*r);
if(ptanke[4].live) DFangXiang(ptanke[4].d, &ptanke[4].x,&ptanke[4].y, &ptanke[4].z,&*r);
if(ptanke[5].live) DFangXiang(ptanke[5].d, &ptanke[5].x,&ptanke[5].y, &ptanke[5].z,&*r);
if(ptanke[6].live) DFangXiang(ptanke[6].d, &ptanke[6].x,&ptanke[6].y, &ptanke[6].z,&*r);
if(*live8) BossFangXiang(x_8, &*x8, &*y8, &*z8, &*r,&*o);
if(*live9) FeiJiFangXiang(&*x9, &*y9, &*r,&*o);
return;
}
void ZhengTiHongSeZhangAiWu(pTanKe ptanke,int (*x_8)[2][3],int (*x_9)[2][3],
int*d,pHongZhuan phongzhuan)
{
if(phongzhuan[0].exist) tileHong(&phongzhuan[0].x, &phongzhuan[0].y);//红色障碍物
if(phongzhuan[0].exist) phongzhuan[0].exist = DBoomBig(ptanke[0].d, &phongzhuan[0].x, &phongzhuan[0].y, &*d);//红色障碍物被打爆
if(phongzhuan[0].exist) phongzhuan[0].exist = DBoomBig(ptanke[1].d, &phongzhuan[0].x, &phongzhuan[0].y, &*d);//红色障碍物被打爆
if(phongzhuan[0].exist) phongzhuan[0].exist = DBoomBig(ptanke[2].d, &phongzhuan[0].x, &phongzhuan[0].y, &*d);//红色障碍物被打爆
if(phongzhuan[0].exist) phongzhuan[0].exist = DBoomBig(ptanke[3].d, &phongzhuan[0].x, &phongzhuan[0].y, &*d);//红色障碍物被打爆
if(phongzhuan[0].exist) phongzhuan[0].exist = DBoomBig(ptanke[4].d, &phongzhuan[0].x, &phongzhuan[0].y, &*d);//红色障碍物被打爆
if(phongzhuan[0].exist) phongzhuan[0].exist = DBoomBig(ptanke[5].d, &phongzhuan[0].x, &phongzhuan[0].y, &*d);//红色障碍物被打爆
if(phongzhuan[0].exist) phongzhuan[0].exist = DBoomBig(ptanke[6].d, &phongzhuan[0].x, &phongzhuan[0].y, &*d);//红色障碍物被打爆
if(phongzhuan[0].exist) phongzhuan[0].exist = DBoomBig(x_8, &phongzhuan[0].x, &phongzhuan[0].y, &*d);//红色障碍物被打爆
if(phongzhuan[0].exist) phongzhuan[0].exist = DBoomBig(x_9, &phongzhuan[0].x, &phongzhuan[0].y, &*d);//红色障碍物被打爆
if(phongzhuan[1].exist) tileHong(&phongzhuan[1].x, &phongzhuan[1].y);//红色障碍物
if(phongzhuan[1].exist) phongzhuan[1].exist = DBoomBig(ptanke[0].d, &phongzhuan[1].x, &phongzhuan[1].y, &*d);//红色障碍物被打爆
if(phongzhuan[1].exist) phongzhuan[1].exist = DBoomBig(ptanke[1].d, &phongzhuan[1].x, &phongzhuan[1].y, &*d);//红色障碍物被打爆
if(phongzhuan[1].exist) phongzhuan[1].exist = DBoomBig(ptanke[2].d, &phongzhuan[1].x, &phongzhuan[1].y, &*d);//红色障碍物被打爆
if(phongzhuan[1].exist) phongzhuan[1].exist = DBoomBig(ptanke[3].d, &phongzhuan[1].x, &phongzhuan[1].y, &*d);//红色障碍物被打爆
if(phongzhuan[1].exist) phongzhuan[1].exist = DBoomBig(ptanke[4].d, &phongzhuan[1].x, &phongzhuan[1].y, &*d);//红色障碍物被打爆
if(phongzhuan[1].exist) phongzhuan[1].exist = DBoomBig(ptanke[5].d, &phongzhuan[1].x, &phongzhuan[1].y, &*d);//红色障碍物被打爆
if(phongzhuan[1].exist) phongzhuan[1].exist = DBoomBig(ptanke[6].d, &phongzhuan[1].x, &phongzhuan[1].y, &*d);//红色障碍物被打爆
if(phongzhuan[1].exist) phongzhuan[1].exist = DBoomBig(x_8, &phongzhuan[1].x, &phongzhuan[1].y, &*d);//红色障碍物被打爆
if(phongzhuan[1].exist) phongzhuan[1].exist = DBoomBig(x_9, &phongzhuan[1].x, &phongzhuan[1].y, &*d);//红色障碍物被打爆
if(!(phongzhuan[0].exist)) {phongzhuan[0].x = -500;phongzhuan[0].y = -500;}
if(!(phongzhuan[1].exist)) {phongzhuan[1].x = -500;phongzhuan[1].y = -500;}
return;
}
void ZhengTiBaiSeZhangAiWu(pTanKe ptanke,int (*x_8)[2][3],int (*x_9)[2][3],int (*x_10)[2][3],int (*x_11)[2][3],
bool *wexist1,
int*d,pBaiZhuan pbaizhuan)
{
if(*wexist1 || pbaizhuan[0].exist) tileBai(&pbaizhuan[0].x, &pbaizhuan[0].y);//白色砖块;
if(*wexist1 || pbaizhuan[1].exist) tileBai(&pbaizhuan[1].x, &pbaizhuan[1].y);//白色砖块;
if(*wexist1 || pbaizhuan[2].exist) tileBai(&pbaizhuan[2].x, &pbaizhuan[2].y);//白色砖块;
if(pbaizhuan[0].exist) pbaizhuan[0].exist = DBoomBig(ptanke[0].d, &pbaizhuan[0].x, &pbaizhuan[0].y, &*d);//白色障碍物被打
DBoomBig(ptanke[1].d, &pbaizhuan[0].x, &pbaizhuan[0].y, &*d);
DBoomBig(ptanke[2].d, &pbaizhuan[0].x, &pbaizhuan[0].y, &*d);
DBoomBig(ptanke[3].d, &pbaizhuan[0].x, &pbaizhuan[0].y, &*d);
DBoomBig(ptanke[4].d, &pbaizhuan[0].x, &pbaizhuan[0].y, &*d);
DBoomBig(ptanke[5].d, &pbaizhuan[0].x, &pb
C语言坦克大战游戏源代码加程序
需积分: 0 113 浏览量
更新于2023-04-27
1
收藏 2.39MB RAR 举报
【C语言坦克大战游戏源代码加程序】是一个典型的C语言编程项目,主要展示了如何使用C语言来开发一款基于命令行界面的游戏。C语言是计算机科学的基础编程语言,以其高效、简洁和灵活而闻名,常用于系统开发、软件工程以及游戏编程等领域。
在这款坦克大战游戏中,开发者可能使用了C语言的基本语法,包括变量声明、数据类型、控制结构(如if语句、循环)、函数定义等。游戏的核心逻辑可能涉及到以下几个关键知识点:
1. **结构体(Struct)**:C语言中的结构体允许我们创建自定义的数据类型,将多个不同类型的数据组合成一个整体。在游戏中,坦克、子弹、障碍物等可能都被定义为结构体,包含位置、速度、生命值等属性。
2. **指针(Pointer)**:指针是C语言的重要特性,可以用来存储变量的地址,使得我们可以直接操作内存。在游戏更新和渲染过程中,指针被广泛用于传递和修改数据。
3. **数组与动态内存分配**:游戏地图和对象可能用数组表示,静态数组适用于固定大小的数据,而动态内存分配(如malloc和free函数)则用于创建可变大小的数据结构,如动态数组或链表。
4. **文件操作**:游戏可能有保存和加载功能,这就需要用到C语言的文件I/O函数,如fopen、fwrite、fread和fclose,来读写游戏状态到磁盘。
5. **游戏循环**:游戏通常有一个主循环(Game Loop),负责处理输入、更新游戏状态和渲染屏幕。这可能通过while或for循环实现,确保游戏持续运行直到用户退出。
6. **事件处理**:C语言不直接支持高级事件处理,但可以通过读取标准输入(如键盘和鼠标)来模拟。例如,使用getch()函数可以捕获用户的按键输入,控制坦克移动和射击。
7. **图形与文本输出**:虽然C语言本身没有图形库,但可以使用第三方库如ncurses或conio.h在命令行界面上实现简单的图形输出和颜色控制,模拟出坦克、障碍物等元素。
8. **算法与数据结构**:游戏中的碰撞检测、射线追踪等可能涉及算法设计,如线段与线段的交点计算。同时,数据结构如队列或栈可能用于管理游戏对象的状态和行为。
9. **优化**:为了提高游戏性能,开发者可能使用了一些优化技巧,如减少不必要的计算、缓存重复使用的数据或预处理部分游戏逻辑。
10. **调试与测试**:良好的调试和测试实践也是项目开发的关键,开发者可能使用了printf语句进行日志输出,或者使用了GDB等调试工具来定位和修复问题。
通过分析这个C语言坦克大战游戏源代码,学习者不仅可以掌握C语言基础,还能深入了解游戏开发原理,体验到编程带来的乐趣和挑战。
海绵不是宝宝817
- 粉丝: 243
- 资源: 9
最新资源
- 基于Springboot+Vue的影院订票系统的设计与实现-毕业源码案例设计(源码+数据库).zip
- 基于Springboot+Vue的疫情管理系统-毕业源码案例设计(高分项目).zip
- 基于Springboot+Vue的影城管理电影购票系统毕业源码案例设计(95分以上).zip
- 贝加莱控制系统常见问题手册
- uDDS源程序subscriber
- 基于Springboot+Vue的游戏交易系统-毕业源码案例设计(源码+数据库).zip
- 基于Springboot+Vue的在线教育系统设计与实现毕业源码案例设计(源码+论文).zip
- 基于Springboot+Vue的在线拍卖系统毕业源码案例设计(高分毕业设计).zip
- PDF翻译器:各种语言的PDF互翻译,能完美保留公式、格式、图片,还能生成单独或者中英对照的PDF文件
- 基于Springboot+Vue的智能家居系统-毕业源码案例设计(源码+数据库).zip
- 基于Springboot+Vue的在线文档管理系统毕业源码案例设计(源码+项目说明+演示视频).zip
- 基于Springboot+Vue的智慧生活商城系统设计与实现-毕业源码案例设计(95分以上).zip
- 基于Springboot+Vue的装饰工程管理系统-毕业源码案例设计(源码+项目说明+演示视频).zip
- 基于Springboot+Vue的租房管理系统-毕业源码案例设计(高分毕业设计).zip
- 基于Springboot+Vue电影评论网站系统设计毕业源码案例设计(高分项目).zip
- 基于Springboot+Vue服装生产管理系统毕业源码案例设计(95分以上).zip