这篇文章主要为大家详细介绍了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.运行结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:C语言基于EasyX库实现有颜色弹跳小球
基础教程推荐
猜你喜欢
- C/C++编程中const的使用详解 2023-03-26
- C++中的atoi 函数简介 2023-01-05
- C++使用easyX库实现三星环绕效果流程详解 2023-06-26
- C利用语言实现数据结构之队列 2022-11-22
- 如何C++使用模板特化功能 2023-03-05
- C++详细实现完整图书管理功能 2023-04-04
- C语言基础全局变量与局部变量教程详解 2022-12-31
- C语言 structural body结构体详解用法 2022-12-06
- 详解c# Emit技术 2023-03-25
- 一文带你了解C++中的字符替换方法 2023-07-20