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.运行结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。