服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言基于EasyX库实现有颜色弹跳小球

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

2022-08-24 14:06summery456 C/C++

这篇文章主要为大家详细介绍了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语言基于EasyX库实现有颜色弹跳小球

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

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

原文链接:https://blog.csdn.net/weixin_43503632/article/details/105470704

延伸 · 阅读

精彩推荐
  • C/C++MFC框架之OnIdle案例详解

    MFC框架之OnIdle案例详解

    这篇文章主要介绍了MFC框架之OnIdle案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    小 楼 一 夜 听 春 雨7732021-12-21
  • C/C++C++ 智能指针的模拟实现实例

    C++ 智能指针的模拟实现实例

    这篇文章主要介绍了C++ 智能指针的模拟实现实例的相关资料,智能指针是一个类,它把普通指针封装起来,能实现和普通指针同样的功能。,需要的朋友可...

    Sweet_wen10462021-05-25
  • C/C++MFC绘制不规则窗体的方法

    MFC绘制不规则窗体的方法

    这篇文章主要介绍了MFC绘制不规则窗体的方法,涉及MFC窗体操作的相关技巧,需要的朋友可以参考下...

    惟愿莲心不染尘8112021-02-26
  • C/C++归并排序的递归实现与非递归实现代码

    归并排序的递归实现与非递归实现代码

    以下是对归并排序的递归实现与非递归实现代码进行了详细的介绍,需要的朋友可以过来参考下...

    C语言教程网3432020-12-23
  • C/C++c++线程池实现方法

    c++线程池实现方法

    这篇文章主要介绍了c++线程池实现方法,实例分析了C++线程池的原理与相关实现技巧,需要的朋友可以参考下...

    liujian06167642021-02-28
  • C/C++C语言实现单词小助手

    C语言实现单词小助手

    这篇文章主要为大家详细介绍了C语言实现单词小助手,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    心温如一4922021-08-04
  • C/C++C语言实现中缀表达式转换为后缀表达式

    C语言实现中缀表达式转换为后缀表达式

    这篇文章主要为大家详细介绍了C语言实现中缀表达式转换为后缀表达式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考...

    苍之羽4372021-09-02
  • C/C++C++实现合并两个排序的链表

    C++实现合并两个排序的链表

    这篇文章主要为大家详细介绍了C++实现合并两个排序的链表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    francis_xd4022021-07-24