鱼C论坛

 找回密码
 立即注册
查看: 2040|回复: 1

[技术交流] 用easyX做了一下动画图大家来交流

[复制链接]
发表于 2022-9-28 02:04:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
11.png


e01.zip (591.19 KB, 下载次数: 0)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-9-28 02:05:49 | 显示全部楼层
main.cpp

  1. /*

  2.     本项目日志
  3. ...


  4. */

  5. /* 需要的头文件 */

  6. #include "e.h"



  7. /* 全局变量 */

  8. #define WIN_WIDTH  640 //大型程序里应当避免这种做法,中小型程序则无妨
  9. #define WIN_HEIGHT 480
  10. #define Bg_num 3


  11. /* 用户输入 */

  12. ExMessage input; //暂未实现 消息机制 学习中


  13. /* 从硬盘读取图形文件 save in the IMAGE */

  14. IMAGE   bg[Bg_num];// 背景Bg_num个 活动物actor_num个


  15. /* 图形的座标变量 use on the IMAGE */

  16. //用于控制 背景的移动 最远的应不移动的最慢,近一层的应当快点 最近的应当最快
  17. int bgx[Bg_num]; //x轴 几个背景就几个x轴 向右移动 造成错落层次的感觉


  18. //渲染 项目背景
  19. void updateBg()
  20. {
  21.        
  22.         putimage(bgx[0],0,  &bg[0]); //背景不移动 全黑图1200*1000 底色不能动
  23.         putimage(bgx[1],168,&bg[1]); //小树
  24.         putimage(bgx[2],300,&bg[2]); //小山
  25.         //bgx[1] +=1;
  26.         //bgx[2] +=2;

  27. }


  28. //消息机制 未实现 学习中
  29. void event_pressed(int &x)
  30. {
  31.        
  32.         //x=0;
  33. }


  34. /* 图像信息统计 */

  35. void Title()
  36. {
  37.         char titlea[]="000000000000";
  38.         char titleb[]="111111111111";
  39.         char titlec[]="the mddle is here";
  40.         outtextxy(100,10,titlea);
  41.         outtextxy( getmaxx() -101-textwidth(titleb) ,10,titleb);
  42.         outtextxy( getmaxx()/2 -textwidth(titlec)/2 ,10,titlec);
  43.        
  44.         /*
  45.        
  46.         非渲染
  47.         文字不是IMAGE对像,需要考虑绘图时消除文字的问题
  48.         或者把文件存入到IMAGE对像统一绘制
  49.         或者使用ito等int型转换char的函数实现每次循环渲染到buff
  50.        
  51.         */
  52. }


  53. //初始化 背景 后面用 结构e 代替 init()中的 加载背景等函数
  54. void init()
  55. {
  56.         initgraph(WIN_WIDTH,WIN_HEIGHT); //第3个参数默认0 控制台开关 flag=0关 flag=1不关
  57.        
  58.         //输出界面文字
  59.         Title();                 
  60.                          
  61.         char name[64]; //文件名变最需要用来读取硬盘上的图片文件
  62.        
  63.         //加载背景
  64.        
  65.         for(int i=0;i<Bg_num; i++)
  66.         {
  67.                 sprintf(name,"F:\\e01\\res\\bg%03d.png",i+5);
  68.                 loadimage(&bg[i],name);
  69.                 bgx[i]=0;
  70.                
  71.         }

  72.         printf("初始化完成");
  73.        
  74. }


  75. int main(int argc, char** argv) {
  76.        
  77.         init();
  78.        
  79.         PlaySound(TEXT("F:\\e01\\sound\\backgroudMusic.wav"),NULL,SND_ASYNC);

  80.         e qq; //创建空对像 用来集中批量地控制图像
  81.        
  82.         qq.get_num_name(5,"F:\\e01\\res\\qq.png"); //10个qq载入IMAGE == init()
  83.        
  84.         for(int i=0;i<5;i++)  
  85.         {
  86.                 qq.set_statu(i,0);              //都设为1状态 == 各种动作 0 不动
  87.                 qq.set_stay(i,10+i*78,10); //都设为停留在不同的位置
  88.         }
  89.        
  90.         e ball;
  91.        
  92.         ball.get_num_name(10, "F:\\e01\\res\\gg03.png" );
  93.        
  94.         for(int i=0;i<10;i++)
  95.         {
  96.                 ball.set_statu(i,1);                         //为下雪作准备
  97.                 ball.set_stay(i,10+i*80,10);         //雪的密度
  98.                 ball.set_addx(i,0);
  99.                 ball.set_addy(i,5);                         //下雪动作
  100.         }

  101.         int on=1;
  102.         while(on)
  103.         {
  104.                 event_pressed(on); //输入 对画面实现控制 人机交互
  105.                
  106.                 BeginBatchDraw(); //批量绘图,开始缓存 下面所有行 绘制但不显示
  107.                
  108.                 updateBg();                                      //图层底 0+x层 写入
  109.                
  110.                 FlushBatchDraw(305,305,310,310); //图层底 所有行,显示出来
  111.                
  112.                 qq.draw_buff();                            //图层中 0+x-1写入
  113.                
  114.                 FlushBatchDraw(305,305,310,310); //图层中,显示出来
  115.                
  116.                 ball.draw_buff();                //图层上 最后刷新出来的图为0层
  117.                
  118.                 EndBatchDraw();                                  //批量绘图结束 显示0层
  119.                
  120.                 Sleep(100);  //0.1秒休眠 提高本项目运行在windows的性能
  121.                
  122.                                                                                  //最后 需,一次下来,显示了3次要按素材设计规划显示的合理性
  123.                
  124.         }
  125.        
  126.         system("pause");
  127.         closegraph();
  128.         return 0;
  129. }




复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 19:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表