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

 更新时间:2022年01月14日 09:35:09   作者: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.运行结果

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

相关文章

  • C++实现邮件群发的方法

    C++实现邮件群发的方法

    这篇文章主要介绍了C++实现邮件群发的方法,较为详细的分析了邮件发送的原理与C++相关实现技巧,非常具有实用价值,需要的朋友可以参考下
    2015-07-07
  • C++超集C++/CLI模块的基本用法

    C++超集C++/CLI模块的基本用法

    这篇文章介绍了C++超集C++/CLI模块的基本用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • C++内嵌汇编示例详解

    C++内嵌汇编示例详解

    这篇文章主要介绍了C++内嵌汇编,本文的所有代码是在我自己的VS2008中测试的,由于环境的差别,不能保证能在所有的编译器上运行,需要的朋友可以参考下
    2022-01-01
  • 如何判断一个整数的二进制中有多少个1

    如何判断一个整数的二进制中有多少个1

    本篇文章是对如何判断一个整数的二进制中有多少个1的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言内存管理及初始化细节示例详解

    C语言内存管理及初始化细节示例详解

    这篇文章主要为大家介绍了C语言内存管理及初始化细节示例的详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • Vs2022环境下安装低版本.net framework的实现步骤

    Vs2022环境下安装低版本.net framework的实现步骤

    本文主要介绍了Vs2022环境下安装低版本.net framework的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • C语言中可变参数的使用方法示例

    C语言中可变参数的使用方法示例

    这篇文章主要给大家介绍了关于C语言中可变参数的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C语言链表实现简单图书管理系统

    C语言链表实现简单图书管理系统

    这篇文章主要为大家详细介绍了C语言链表实现简单图书管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Qt扫盲篇之QRegExp正则匹配类总结

    Qt扫盲篇之QRegExp正则匹配类总结

    这篇文章主要给大家介绍了关于Qt扫盲篇之QRegExp正则匹配类总结的相关资料,QRegExp是Qt框架中的一个类,用于进行正则表达式的匹配和处理,它提供了多种模式来匹配不同的字符串,需要的朋友可以参考下
    2023-12-12
  • C语言中函数栈帧的创建和销毁的深层分析

    C语言中函数栈帧的创建和销毁的深层分析

    在C语言中,每一个正在运行的函数都有一个栈帧与其对应,栈帧中存储的是该函数的返回地址和局部变量。从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数执行完后返回到哪里等等
    2022-04-04

最新评论