C语言实现:见缝插针游戏!代码思路+源码分享

2023-05-28 0 649

见缝插圆我们昨晚早已用C词汇同时实现了,那时将同时实现两个单枪匹马的格斗游戏。

C语言实现:见缝插针游戏!代码思路+源码分享

格斗游戏如是说:《单枪匹马格斗游戏》是这款十分消闲益智类的且难里头的小格斗游戏,该格斗游戏镜头十分的简约,米紫色的大背景华北局,置放着两个急速转动的月亮状的球体,邻近柱状好似放射治疗相连着很多陀螺,又有点儿银河系中地球的觉得,大部份球体均以紫色居多,与米紫色的大背景造成出了独特的对照。格斗游戏的动作游戏比较简单,当紫色的球体时不时转动的这时候,玩者只需透过点选萤幕,让萤幕上方带有位数的陀螺黏在乒乓上,直的大部份暗含位数的球都粘完方可。

挪动单击后升空一根针到球体上,大部份针逆时针方向转动;假如新升空的针遇到已近的针,格斗游戏完结。

习题:

具体来说展开了球体与针的绘出,借助余弦同时实现了针的转动;接着自学了二维字符串的基本概念,并借助字符串同时实现了三根针的效用;借助大批量绘出表达式改良了绘出效用;最终同时实现了针的升空与减少、格斗游戏失利推论、罚球与表明效用的改良。

格斗游戏效用图如下表所示:

C语言实现:见缝插针游戏!代码思路+源码分享

源标识符实例:

#include <graphics.h> #include <conio.h> #include <stdio.h> #include <math.h> int main() { const float Pi = 3.1415926; // Pi常量 int width = 800; // 镜头宽度 int height = 600; // 镜头高度 initgraph(width,height); // 新开两个镜头 setbkcolor(RGB(255,255,255)); // 大背景为紫色 setlinestyle(PS_SOLID,3); // 线宽为3,这样针看起来更明显 float lineLength = 160; // 针的长度 floatxEnd,yEnd;// 针的终点位置坐标(针起始位置为圆心) float rotateSpeed = Pi/360; // 针的转动速度 int lineNum = 0; // 在转动的针的个数 float Angles[1000];// 浮点位数符串,存储大部份针的转动角度,最多1000根针 int score = 0; // 罚球 int i; BeginBatchDraw(); // 开始大批量绘出 while (1) // 重复循环{ cleardevice();// 以大背景色清空大背景 setlinecolor(RGB(0,0,0)); // 设置针颜色为紫色 line(0,height/2,lineLength,height/2); // 左边升空区域的一根针 for (i=0;i<lineNum;i++) // 对大部份转动针展开遍历 { Angles[i] = Angles[i] + rotateSpeed; // 角度减少 if (Angles[i]>2*Pi) // 假如超过2*Pi,就减去2*Pi,防止角度数据无限减少 Angles[i] = Angles[i] – 2*Pi; // xEnd = lineLength*cos(-Angles[i]) +width/2; // 计算针的末端坐标 yEnd = lineLength*sin(-Angles[i]) +height/2; setlinecolor(RGB(0,0,255)); // 设定转动针的颜色为蓝色 if (i==lineNum-1) // 最新升空的一根针,设定颜色为红色 setlinecolor(RGB(255,0,0)); line(width/2,height/2,xEnd,yEnd); // 绘出一根针 } if (kbhit() && rotateSpeed!=0) // 假如按键,并且转动速度不等于0 { char input = _getch(); // 获得用户按键输入 if (input==) // 假如为单击 { lineNum++; // 针的个数加1 Angles[lineNum-1] = Pi; // 这根新减少针的初始角度xEnd = lineLength*cos(-Angles[lineNum-1]) +width/2; //新增针的末端坐标 yEnd = lineLength*sin(-Angles[lineNum-1]) +height/2; line(width/2,height/2,xEnd,yEnd); // 绘出出这根新减少的针 for (i=0;i<lineNum-1;i++) // 拿新减少的针和之前大部份针比较 { // 假如两根针之间角度接近,认为碰撞,格斗游戏失利 if (abs(Angles[lineNum-1]-Angles[i]) < Pi/60) { rotateSpeed = 0; // 转动速度设为0 break; // 不用再比较了,循环跳出 } } score = score + 1; // 罚球+1 } } setfillcolor(HSVtoRGB(0,lineNum/60.0,0.8)); // 绘出中间的球体,针越多,其颜色越鲜艳 setlinecolor(HSVtoRGB(0,0.9,0.8)); // 设置球体线条颜色为红色 fillcircle(width/2,height/2,60); // 绘出中间的球体 TCHAR s[20]; // 定义字符串字符串 _stprintf(s, _T(“%d”), score); // 将score转换为字符串settextstyle(50, 0, _T(“Times”)); // 设置文字大小、字体 settextcolor(RGB(50,50,50)); // 设置字体颜色 outtextxy(65, 200, s); // 输出罚球文字 FlushBatchDraw(); // 大批量绘出 Sleep(10); // 暂停10毫秒 } closegraph(); // 关闭镜头 return 0; }

这一次主要讲解了二维字符串、const常量、break与continue等语法知识,自学了大批量绘出功能、math.h中的余弦与绝对值表达式,同时实现了单枪匹马的格斗游戏。读者可以在本章标识符基础上继续改良:

1. 随着格斗游戏的展开,针的转动速度越来越快,格斗游戏难度越来越大;

2. 中间表明为转动蛇图案,每被针射中一次,换一次随机颜色;

3. 尝试在镜头右边新增一位玩者,同时实现双人版的单枪匹马格斗游戏。

读者也可以参考本章的开发路子,尝试设计并分步骤同时实现旋转炮台射击气球的小格斗游戏。

希望对大家有帮助!

作者:童晶

此外,我也给大家撷取我收集的其他资源,从最零基础开始的教程到C词汇C++项目案例,帮助大家在自学C词汇的道路上披荆斩棘!

编程自学书籍撷取:

C语言实现:见缝插针游戏!代码思路+源码分享

编程自学视频撷取:

C语言实现:见缝插针游戏!代码思路+源码分享

整理撷取(多年自学的源标识符、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!

【编程交流】一起来自学哦!可以领取一些

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务