C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C语言颜色弹跳小球

C语言基于EasyX库实现有颜色弹跳小球

作者:summery456

这篇文章主要为大家详细介绍了C语言基于EasyX库实现有颜色弹跳小球,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了基于EasyX库实现有颜色弹跳小球的具体代码,供大家参考,具体内容如下

1.目标要求

1.实现一个有颜色小球在窗口中弹跳
2.遇到边界弹跳

2.C语言代码

#include<graphics.h> 
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>

#define High 480
#define Width 640//画布尺寸

/*
刷屏问题

  移动的间距小、延时短,动画就会越细腻。但当画面较复杂时,会带来画面的闪烁。

  1.BeginBatchDraw这个函数用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到屏幕上,直到执行
FlushBatchDraw或EndBatchDraw才将之前的绘图输出
  2.FlushBatchDraw这个函数用于执行未完成的绘制任务。
  3.EndBatchDraw这个函数用于结束批量绘制,并执行未完成的绘制任务。
*/

void HideCursor(){    //隐藏光标位置 ,这个函数复制代码就行 
    CONSOLE_CURSOR_INFO cursor_info={1,0}; 
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void gotoxy(int x,int y){    //把光标放在(0,0)位置 ,这个函数复制代码就行
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle,pos);
} 

int IsEnd;//是否结束 
int scores;//分数 
int slow_v,slow_v_num;//移动变慢的值(越大速度越慢),移动变慢的变量
int ball_x,ball_y;//小球坐标
int ball_r;//小球半径
int ballv_x,ballv_y;//小球速度

void startup(){    //【数据初始化】 
    
    HideCursor();//不显示光标 
    IsEnd = 0;
    scores=0;    
    slow_v=1;
    slow_v_num=1; 
    initgraph(Width,High);//展示画布
    ball_x=Width/2;
    ball_y=High/2;
    ballv_x=1;
    ballv_y=1;
    ball_r=20;

    
}
void show_begin(){//【初始页面展示】 
    BeginBatchDraw();
} 
void show(){    //【显示画面】 
    setcolor(YELLOW);//设置颜色
    setfillcolor(GREEN);//设置填充颜色
    fillcircle(ball_x,ball_y,ball_r);//填充圆
    FlushBatchDraw();//更新一次画面,解决画面闪的问题,需要配合BeginBatchDraw函数使用
    Sleep(10);//延时
    cleardevice();//清除之前的画迹
    ball_x += ballv_x;
    ball_y += ballv_y;
    
    
}
void update_outinput(){    //【与输入无关的更新】 
    if(ball_x+ball_r>=Width||ball_x-ball_r<=0){
        ballv_x *= -1;
    }
    if(ball_y+ball_r>=High||ball_y-ball_r<=0){
        ballv_y *= -1;
    }
    
    
}
void update_input(){//【与输入有关的更新】 
    char input;
    if(kbhit()){
        input = getch();
                
    }
}
void show_end(){//【显示失败界面】 
    EndBatchDraw();
}

int main(){
    startup();    //数据初始化
    show_begin();//初始页面 
    while(!IsEnd){    //游戏循环执行 
        show();    // 显示画面 
        update_outinput();    //与输入无关的更新 
        update_input();    //与输入有关的更新 
    }
    show_end(); //显示失败界面 
    return 0;
}

3.运行结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文