WCQ桌面弹球12-26.pptVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WCQ桌面弹球12-26

桌面弹球 本课内容 小球碰碰演示 你的思路是什么? 1.怎么把这个球来画出来? 2.怎么把这个球不留痕迹地移动? 简介 3.怎么让球按我们的编程目的移动呢? 简介 小球撞墙完整源代码 /*************************************************** **程序名:小球撞墙 **作 者:王诚强 *************************************************/ #include Conio.h #include graphics.h #define closegr closegraph #include stdlib.h void initgr(void) /* BGI初始化 */ { int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */ registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */ initgraph(gd, gm, ); } 想一想 想想还有什么方法可以达到你的目的? 如果是两个甚至多个球你会怎么做? 看你还能从中得到什么启发,能不能自己想一个程序,然后把它做出来?(比如台球、弹球、贪吃蛇、甚至祖玛) Thank you! * 大一讲师团 王诚强 你想做什么? 假设今天你想做的是下面这么一个例子,你会怎么思考并实现它? C语言 2.其次是怎么让这个球不留痕迹地移动; 1.首先是怎么把这个球画出来; 3.再者怎么让球按自己的意愿移动; 4.边界的判断; C语言 a.简单的方法 setcolor(color); circle(x, y, 20); b.稍复杂一点的 setcolor(color); setfillstyle(1,YELLOW); circle(x, y, 16); floodfill(x,y,color); c.使用图片 C语言 a.简单的方法 坐标改变,在旧的位置用背景色再画一次。然后在新的位置再画上一个新的图形 如图所示: C语言 我们先来试一下第一种方法 作图时这样做: setbkcolor(BLUE); While(!kbhit())/*这里表示没有按键按下,与bioskey不同*/ { setcolor(YELLOW); circle(x, y, 20); delay(5000);/*以黄色第一次画圆*/ setcolor(BLUE); circle(x, y, 20);/*以背景色蓝色画圆*/ X++;y++;/*看看写成x=(x+1)%660会怎样*/ } 然后你试着用填充方法再作一次图并让它移动,看会产生什么现象。 b.用内存来作图 C语言 我们发现一旦图形复杂了,移动时便会一闪一闪。那么如何解决这个问题呢?这里提供一种方法。 int size; void *buf; int x=60,y=60; setbkcolor(BLUE); setcolor(color); setfillstyle(1,YELLOW); circle(x, y, 16); floodfill(x,y,color); size=imagesize(x-20, y-20, x+20, y+20); buf=malloc(size); getimage(x-20, y-20, x+20, y+20,buf); putimage(x-20+100, y-20, buf, COPY_PUT); 前面的x++改变坐标是一种方式但有没有别的方式了呢? 一个球可以改变坐标,我们是不是也可以让它改变方向呢? switch(m) { case 0:x+=dx;break; case 1:x-=dx;break; } switch(n) { case 0:y+=dy;break; case 1:y-=dy;break; } if(m!=mbefor || n!=nbefor) { dx=rand()%5+1; dy=rand()%5+1; color=(color+1)%15+1; } 4.越界的判断 C语言 前面我们用开关语句来改变小球的方向,那么什么时候要改变方向呢? ScrWide=getmaxx(); ScrHeiht=getmaxy(); if(x(ScrWide-20-dx))m=1; else if(x(20+dx))m=0; if(y(ScrHeiht-20-dy))

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档