(图书介绍:童晶:《C和C++游戏趣味编程》新书预告)

本章我们将绘制非常神奇的错觉图片,静止的圆盘看起来却有在转动的错觉。

首先学习绘制扇形函数和RGB颜色模型,绘制了一个基本单元;然后学习了for循环语句和循环的嵌套,实现了旋转蛇的绘制;最后学习了HSV颜色模型,并利用随机函数和按键切换,实现了丰富多变的旋转蛇错觉图案。

4 旋转蛇

视频教程:

4.1 绘制扇形

4.2 绘制彩色扇形单元

4.3 for循环语句

4.4 循环的嵌套

4.5 彩色旋转蛇

最终代码:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>
int main()
{float Pi = 3.14159;  // 圆周率Piinitgraph(800,600); // 打开一个窗口setbkcolor(RGB(128,128,128)); // 设置背景颜色为灰色cleardevice();  // 以背景颜色清空画布srand(time(0)); // 随机种子函数int centerX,centerY; // 圆心坐标int radius; // 圆半径    int i;float offset;  // 同一半径各组扇形之间的角度偏移量float totalOffset; // 不同半径之间的角度偏移量while(1)  // 重复执行{    for (centerX = 100;centerX<800;centerX=centerX+200) // 对圆心x坐标循环{for (centerY = 100;centerY<600;centerY=centerY+200) // 对圆心y坐标循环{totalOffset = 0; // 同一半径各组扇形之间的角度偏移量float h = rand()%180; // 随机色调COLORREF  color1 = HSVtoRGB(h,0.9,0.8); // 色调1生成的颜色1COLORREF  color2 = HSVtoRGB(h+180,0.9,0.8); // 色调2生成的颜色2for (radius=100;radius>0;radius=radius-20) // 半径从大到小绘制{int left = centerX - radius; // 圆外切矩形左上角x坐标int top = centerY - radius; // 圆外切矩形左上角y坐标int right = centerX + radius; // 圆外切矩形右下角x坐标int bottom = centerY + radius; // 圆外切矩形右下角y坐标 for (i=0;i<20;i++) // 绕着旋转一周,绘制扇形区域{offset = i*Pi/10 + totalOffset; // 各组扇形之间偏移的角度setfillcolor(color1); // 色调1生成的颜色1solidpie(left,top,right,bottom,offset,2*Pi/60+offset); setfillcolor(RGB(255,255,255));// 设置填充颜色为白色solidpie(left,top,right,bottom,2*Pi/60+offset,3*Pi/60+offset); setfillcolor(color2); // 色调2生成的颜色2solidpie(left,top,right,bottom,3*Pi/60+offset,5*Pi/60+offset); setfillcolor(RGB(0,0,0));// 设置填充颜色为黑色solidpie(left,top,right,bottom,5*Pi/60+offset,6*Pi/60+offset); }totalOffset = totalOffset + Pi/20; // 不同半径间角度偏移量为Pi/20}}}_getch();  // 暂停,等待按键输入}   return 0;
}

这一章主要讲解了for循环语句、循环嵌套等语法知识,学习了扇形的绘制、颜色的表示与设置,实现了旋转蛇错觉图片的绘制。读者也可以参考本章的思路,尝试绘制其他好玩的错觉图案。

第4章 旋转蛇(《C和C++游戏趣味编程》配套教学视频)相关推荐

  1. 第12章 坚持一百秒(《C和C++游戏趣味编程》教学视频)

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 本章我们将编写坚持一百秒游戏,玩家通过鼠标控制火箭躲避一架UFO和越来越多的反弹子弹,效果如图所示. 首先学习图片的导入和显示,并利 ...

  2. 第7章 贪吃蛇(《C和C++游戏趣味编程》配套教学视频)

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 本章我们将编写贪吃蛇游戏,效果如图所示.键盘控制小蛇上下左右移动,吃到食物后长度加一:蛇头碰到自身或窗口边缘,游戏失败. 首先利用全 ...

  3. 《Python游戏趣味编程》 第9章 贪吃蛇

    9 贪吃蛇 图书简介可以看这里: 童晶:<Python游戏趣味编程>新书上架了 本章我们将编写一个贪吃蛇的游戏,效果如图9-1所示.键盘控制小蛇上下左右移动,吃到食物后长度加一:蛇头碰到自 ...

  4. 第5章 见缝插针(《C和C++游戏趣味编程》配套教学视频)

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 本章我们将实现一个见缝插针的游戏.按下空格键后发射一根针到圆盘上,所有针逆时针方向转动:如果新发射的针碰到已有的针,游戏结束. 首先 ...

  5. 《C和C++游戏趣味编程》 第8章 十步万度

    没想到前几天新书预告中(童晶:<C和C++游戏趣味编程>新书预告),有这么多朋友对实现十步万度游戏感兴趣,下面提前开源最终代码. 这个案例使用VS 2010 + EasyX开发,感兴趣的朋 ...

  6. 第13章 祖玛(《C和C++游戏趣味编程》配套教学视频)

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 本章我们将编写祖玛游戏,各种颜色的小球沿着轨道移动,玩家必须阻止小球进入轨道终点的城堡.鼠标可以移动控制炮台旋转.鼠标右键更换小球颜 ...

  7. 《Python游戏趣味编程》 第6章 见缝插针

    6 见缝插针 Python游戏开发 图书简介可以看这里: 童晶:<Python游戏趣味编程>新书上架了 本章我们将编写一个见缝插针的游戏.按下空格键后发射一根针到圆盘上,所有发射的针跟着圆 ...

  8. 第8章 十步万度(《C和C++游戏趣味编程》配套教学视频)

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 本章我们将编写十步万度游戏,效果如图所示.鼠标点击任意一个小圆圈,其指针顺时针旋转90度,后续被指向的圆圈指针也依次旋转,所有圆圈的 ...

  9. python趣味编程100_《Python游戏趣味编程》 第8章 勇闯地下一百层

    知乎视频​www.zhihu.com 图书简介可以看这里:童晶:<Python游戏趣味编程>新书上架了​zhuanlan.zhihu.com 本章我们将编写一个勇闯地下一百层的游戏,键盘控 ...

最新文章

  1. WebLogic Server的Identity Assertion--转载
  2. mysql为什么要分库_我们为什么要分库分表
  3. Tomcat设置Http自动跳转Https
  4. 轻松理解vuex的运用和常见问题,顺便学会vue企业必备实例
  5. SAP Spartacus CMS 页面加载逻辑和性能的优化
  6. GPU Gems2 - 13 动态环境光遮蔽与间接光照(Dynamic Ambient Occlusion and Indirect Lighting)
  7. 马踏棋盘算法(骑士周游)
  8. vue项目中vue-echarts讲解及常用图表方案实现
  9. Java 递归、尾递归、非递归 处理阶乘问题
  10. IDEA中单元测试使用Scanner控制台无法输入
  11. android srgb模式,一加3固件官方更新:加入屏幕边缘防误触和sRGB显示模式功能
  12. 限制计算机网口权限,谁能上网我来定——控制软件的联网权限
  13. 机顶盒安装APK应用的方法
  14. XMLHttpRequest对象的readyState与status
  15. home目录权限linux,linux 文件/文件夹权限
  16. vue——router更改路由地址,但是页面不能跳转
  17. 笔记本简单使用eNSP的云连接外网
  18. 三维重建技术(2)各种方法简介
  19. 【计算机视觉】:(3)全景图像拼接
  20. python 51单片机开发_Python 单片机

热门文章

  1. 目标检测——知识蒸馏的学习笔记
  2. 线程池的参数及执行顺序
  3. 【米课】思维导图与深度思考
  4. 完整的Flex多文件上传实例
  5. 谁适合做Scrum Master?
  6. Json序列反序列类型处理帮助类
  7. [SharePoint][SharePoint 2013从入门到精通]Chapter 1 介绍 SharePoint2013
  8. myeclipse-common 找不到
  9. HTML5之美(转)
  10. 看看什么样的人适合网上开店( 转载)