本文实例为大家分享了基于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//画布尺寸
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.运行结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。