|
楼主 |
发表于 2022-9-28 02:05:49
|
显示全部楼层
main.cpp
- /*
- 本项目日志
- ...
- */
- /* 需要的头文件 */
-
- #include "e.h"
- /* 全局变量 */
- #define WIN_WIDTH 640 //大型程序里应当避免这种做法,中小型程序则无妨
- #define WIN_HEIGHT 480
- #define Bg_num 3
- /* 用户输入 */
- ExMessage input; //暂未实现 消息机制 学习中
- /* 从硬盘读取图形文件 save in the IMAGE */
- IMAGE bg[Bg_num];// 背景Bg_num个 活动物actor_num个
- /* 图形的座标变量 use on the IMAGE */
- //用于控制 背景的移动 最远的应不移动的最慢,近一层的应当快点 最近的应当最快
- int bgx[Bg_num]; //x轴 几个背景就几个x轴 向右移动 造成错落层次的感觉
- //渲染 项目背景
- void updateBg()
- {
-
- putimage(bgx[0],0, &bg[0]); //背景不移动 全黑图1200*1000 底色不能动
- putimage(bgx[1],168,&bg[1]); //小树
- putimage(bgx[2],300,&bg[2]); //小山
- //bgx[1] +=1;
- //bgx[2] +=2;
- }
- //消息机制 未实现 学习中
- void event_pressed(int &x)
- {
-
- //x=0;
- }
- /* 图像信息统计 */
-
- void Title()
- {
- char titlea[]="000000000000";
- char titleb[]="111111111111";
- char titlec[]="the mddle is here";
- outtextxy(100,10,titlea);
- outtextxy( getmaxx() -101-textwidth(titleb) ,10,titleb);
- outtextxy( getmaxx()/2 -textwidth(titlec)/2 ,10,titlec);
-
- /*
-
- 非渲染
- 文字不是IMAGE对像,需要考虑绘图时消除文字的问题
- 或者把文件存入到IMAGE对像统一绘制
- 或者使用ito等int型转换char的函数实现每次循环渲染到buff
-
- */
- }
- //初始化 背景 后面用 结构e 代替 init()中的 加载背景等函数
- void init()
- {
- initgraph(WIN_WIDTH,WIN_HEIGHT); //第3个参数默认0 控制台开关 flag=0关 flag=1不关
-
- //输出界面文字
- Title();
-
- char name[64]; //文件名变最需要用来读取硬盘上的图片文件
-
- //加载背景
-
- for(int i=0;i<Bg_num; i++)
- {
- sprintf(name,"F:\\e01\\res\\bg%03d.png",i+5);
- loadimage(&bg[i],name);
- bgx[i]=0;
-
- }
- printf("初始化完成");
-
- }
- int main(int argc, char** argv) {
-
- init();
-
- PlaySound(TEXT("F:\\e01\\sound\\backgroudMusic.wav"),NULL,SND_ASYNC);
- e qq; //创建空对像 用来集中批量地控制图像
-
- qq.get_num_name(5,"F:\\e01\\res\\qq.png"); //10个qq载入IMAGE == init()
-
- for(int i=0;i<5;i++)
- {
- qq.set_statu(i,0); //都设为1状态 == 各种动作 0 不动
- qq.set_stay(i,10+i*78,10); //都设为停留在不同的位置
- }
-
- e ball;
-
- ball.get_num_name(10, "F:\\e01\\res\\gg03.png" );
-
- for(int i=0;i<10;i++)
- {
- ball.set_statu(i,1); //为下雪作准备
- ball.set_stay(i,10+i*80,10); //雪的密度
- ball.set_addx(i,0);
- ball.set_addy(i,5); //下雪动作
- }
- int on=1;
- while(on)
- {
- event_pressed(on); //输入 对画面实现控制 人机交互
-
- BeginBatchDraw(); //批量绘图,开始缓存 下面所有行 绘制但不显示
-
- updateBg(); //图层底 0+x层 写入
-
- FlushBatchDraw(305,305,310,310); //图层底 所有行,显示出来
-
- qq.draw_buff(); //图层中 0+x-1写入
-
- FlushBatchDraw(305,305,310,310); //图层中,显示出来
-
- ball.draw_buff(); //图层上 最后刷新出来的图为0层
-
- EndBatchDraw(); //批量绘图结束 显示0层
-
- Sleep(100); //0.1秒休眠 提高本项目运行在windows的性能
-
- //最后 需,一次下来,显示了3次要按素材设计规划显示的合理性
-
- }
-
- system("pause");
- closegraph();
- return 0;
- }
复制代码 |
|