C语言小游戏――反弹球(简单的图形化界面),供大家参考,具体内容如下

1.环境准备和安装

安装Visual C++ 6.0。

去Easy X官网下载Easy X安装包。

2.Eaxy X功能的简单介绍

Easy X类似于一个库函数,其中带有许多很有用的函数。

Easy x首先创建一个新的窗口进行绘图。

可以画常见点 线 多边形 可以调节颜色。

可以插入图片,音乐。

可以获取鼠标信息。

其中函数的具体使用可以看安装包中带有的帮助文件

3.反弹球游戏主函数框架

int main (void)

{

starup();//数据初始化

while(1)

{

show();//画面初始化

updateWithoutInput();//与用户输入无关的更新

updateWithInput();//与用户输入有关的更新

}

}

与上篇贪吃蛇的框架类似

starup();对全局变量初始化

show();画具体的图像(球 目标 木板)

updateWithoutInput(); 碰壁反弹 碰到木板反弹

updateWithInput();控制长方形的移动

4.头文件的加载和全局变量的设定

#include

#include

#include

#include

//全局变量

int high,width;//游戏尺寸

int ball_x,ball_y,ball_r;//球

int board_x,board_y,board_long,board_bottom;//木板

int gaol_x,gaol_y,gaol_long;//目标

int velocity_x,velocity_y;//速度

5.第一个函数starup() 全局变量的初始化

void startup()

{

high=540;width=480;//游戏尺寸

ball_y=30;ball_x=width/3;ball_r=15;//球的坐标

board_y=high/2;board_x=width/2;//木板

board_long=150;board_bottom=10;

gaol_y=2;

gaol_x=width/2;

gaol_long=20; //目标第一个点的坐标

velocity_x=1,velocity_y=1;//速度

initgraph(width,high);

}

所有图像都是以像素为单位,所以设定的很大

木板为长方形 目标为正方形

initgraph(width,high);建立一个宽为width,高为high的窗口

6.第二个函数show() 打印画面

void show()

{

setbkcolor(RGB(255,255,255));

cleardevice();//清屏

setfillcolor(RGB(0,0,255));

fillcircle(ball_x,ball_y,ball_r);

setfillcolor(RGB(0,0,0));

fillrectangle(board_x,board_y,board_x+board_long,board_y+board_bottom);

setfillcolor(RGB(255,0,0));

fillrectangle(gaol_x,gaol_y,gaol_x+gaol_long,gaol_y+gaol_long);

}

setbkcolor(RGB(255,255,255));设置当前绘图背景色(白)

cleardevice();清屏(使用当前背景色覆盖)

setfillcolor(RGB(0,0,255));设置当前的填充颜色(蓝)

fillcircle(x,y,r);画一个圆心为(x,y)半径为r有颜色填充的圆

fillrectangle(x1,y1,x2,y2);画一个左上座标为(x1,y1)右下为(x2,y2)有颜色填充的矩形

7.第三个函数updateWithoutInput();与输入无关的更新

void updateWithoutInpurt()

{

ball_x+=velocity_x;

ball_y+=velocity_y;

if(ball_x==1||ball_x==width-2)//碰壁反弹

velocity_x=-velocity_x;

if(ball_y==1||ball_y==high-2)

velocity_y=-velocity_y;

if(ball_y==board_y&&(ball_x>=board_x&&ball_x

velocity_y=-velocity_y;

if(ball_y==board_y+board_bottom&&(ball_x>=board_x&&ball_x

velocity_y=-velocity_y;

if((ball_x>gaol_x&&ball_xgaol_y&&ball_y

{

srand((unsigned)time(NULL));/*做随机数产生种子*/

gaol_y=rand()%(high/2-gaol_long)+1;

gaol_x=rand()%(width/2-gaol_long)+1;

}

}

功能:

* 碰壁反弹

* 碰木板反弹

* 如果球碰到目标,目标重新刷新

8.第四个函数 updateWithInput();与用户输入有关的更新

void updateWithInpurt()

{

char input;

if(kbhit())

{

input=getch();

if(input=="w"&&board_y>1)

board_y-=10;

if(input=="s"&&board_y+board_bottom

board_y+=10;

if(input=="a"&&board_x>1)

board_x-=10;

if(input=="d"&&board_x+board_long

board_x+=10;

}

}

因为是以像素为单位绘画,所以每次移动10个单位

完整代码

#include

#include

#include

#include

//全局变量

int high,width;//游戏尺寸

int ball_x,ball_y,ball_r;//球

int board_x,board_y,board_long,board_bottom;//木板

int gaol_x,gaol_y,gaol_long;//目标

int velocity_x,velocity_y;//速度

void startup()

{

high=540;width=480;//游戏尺寸

ball_y=30;ball_x=width/3;ball_r=15;//球的坐标

board_y=high/2;board_x=width/2;//木板

board_long=150;board_bottom=10;

gaol_y=2;

gaol_x=width/2;

gaol_long=20; //目标第一个点的坐标

velocity_x=1,velocity_y=1;//速度

initgraph(width,high);

}

void show()

{

setbkcolor(RGB(255,255,255));

cleardevice();//清屏

setfillcolor(RGB(0,0,255));

fillcircle(ball_x,ball_y,ball_r);

setfillcolor(RGB(0,0,0));

fillrectangle(board_x,board_y,board_x+board_long,board_y+board_bottom);

setfillcolor(RGB(255,0,0));

fillrectangle(gaol_x,gaol_y,gaol_x+gaol_long,gaol_y+gaol_long);

}

void updateWithoutInpurt()

{

ball_x+=velocity_x;

ball_y+=velocity_y;

if(ball_x==1||ball_x==width-2)//碰壁反弹

velocity_x=-velocity_x;

if(ball_y==1||ball_y==high-2)

velocity_y=-velocity_y;

if(ball_y>board_y&&(ball_x>=board_x&&ball_x

velocity_y=-velocity_y;

if(ball_y==board_y+board_bottom&&(ball_x>=board_x&&ball_x

velocity_y=-velocity_y;

if((ball_x>gaol_x&&ball_xgaol_y&&ball_y

{

srand((unsigned)time(NULL));/*做随机数产生种子*/

gaol_y=rand()%(high/2-gaol_long)+1;

gaol_x=rand()%(width/2-gaol_long)+1;

}

}

void updateWithInpurt()

{

char input;

if(kbhit())

{

input=getch();

if(input=="w"&&board_y>1)

board_y-=10;

if(input=="s"&&board_y+board_bottom

board_y+=10;

if(input=="a"&&board_x>1)

board_x-=10;

if(input=="d"&&board_x+board_long

board_x+=10;

}

}

int main(void)

{

startup();

while(1)

{

show();

updateWithoutInpurt();

updateWithInpurt();

}

}

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

反弹c语言作业,C语言实现反弹球游戏相关推荐

  1. 反弹c语言作业,C语言实现反弹球小游戏

    本文为大家分享了C语言反弹球游戏的具体代码,供大家参考,具体内容如下 这是利用函数写的C语言小游戏,用来检验自己的学习成果 反弹球的实现主要有几个子函数组成 问题也在于如何实现小球的下落,以及碰撞得分 ...

  2. 华师c语言作业,C语言程序设计(华师在线作业)1.doc

    C语言程序设计(华师在线作业)1 本学期作业以附件形式完成1. 完成一个大小写字母自动转换的程序,输入大写字母,程序可以输出小写字母,输入小写字母,可以输出大写字母2. 用三种循环方式实现1-100的 ...

  3. 自动批改c语言作业,C语言 选择题功课批改

    C语言 选择题作业批改 输入 第一行包含2个整数n,k,分别表示本次考试中试选择题的个数和每个选择题的分值.第二行包含一个长度为n的字符串,表示标准答案.第三行包含一个整数s,表示试卷的份数.其下的s ...

  4. 网吧管理系统C语言作业,C语言课程设计-网吧管理系统.doc

    C语言课程设计-网吧管理系统 <通信工程专业C语言课程设计> 报 告 专 业: 通信工程 班 级: 0802 姓 名: 赵 松 指导教师: 丁 雄 二00九 年 十二 月 二十五 日 目 ...

  5. 输出教师信息c语言作业,C语言教师管理系统代码(最新整理)

    <C语言教师管理系统代码(最新整理)>由会员分享,可在线阅读,更多相关<C语言教师管理系统代码(最新整理)(7页珍藏版)>请在人人文库网上搜索. 1.include #incl ...

  6. 订单查询系统c语言作业,C语言设计订单管理系统答题.doc

    PAGE \* MERGEFORMAT30 C语言课程设计 随米打印订单管理系统 学 院: 计算机与信息科学学院 学生姓名: 谢润发 指导教师: 王新祥 职称 教授 专 业: 网络工程 班 级: 15 ...

  7. 图书馆系统c语言作业,C语言图书馆管理系统课程设计报告

    <C语言图书馆管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言图书馆管理系统课程设计报告(16页珍藏版)>请在人人文库网上搜索. 1.高级语言程序设计课程设计报告 ...

  8. 停车场管理系统C语言作业,c语言课程设计报告停车场管理系统

    c语言课程设计报告停车场管理系统 C 语言课程设计报告 --停车场管理 1 班 级: 192102 学 号: 20101003907 姓 名: 聂 彪 指导教师: 张冬梅 时 间: 2011 年 6 ...

  9. 湖南师范大学c语言作业,c语言上机实验(湖南师范大学).ppt

    c语言上机实验(湖南师范大学) 实验内容 实验1: 熟悉上机环境和顺序结构编程练习--键盘输入与屏幕输出练习 问题1:要使下面程序的输出语句在屏幕上显示1,2,34,则从键盘输入的数据格式应为以下备选 ...

  10. pta c语言作业,C语言PTA平台习题与答案

    第二章作业 1 ①.本题要求编写程序,输出一个短句"Welcome to You!" #include int main() { printf("Welcome to Y ...

最新文章

  1. make[1]: g++: Command not found
  2. Mysql练习题13- 员工薪水中位数
  3. 页面分享怎么知道通过哪条链接进来的_如何制作微信图文链接
  4. django restful 请求_利用 Django REST framework 构建 RESTful Web API
  5. 大剑无锋之什么是值传递和引用传递?【面试推荐】
  6. 吕述望 计算机网络专家,特稿: 中科院吕述望教授:互联网名不符实
  7. ocp oracle 考试报名_获得Oracle认证对拓展职业前景的影响
  8. 【EntityFramework学习笔记】为什么要使用迁移
  9. Javascript 正则表达式校验数字
  10. 松本行弘的程序世界读书笔记
  11. python xlwt_Python xlwt导出excel完整版
  12. 逍遥子张勇:CEO要更多思考“长远的事”和“不可为的事”
  13. 老鸟必备 | 如何画出优秀的架构图
  14. 计算机系统结构专业学什么,江苏大学专业介绍:计算机系统结构
  15. 微信小程序:本地存储数据
  16. 【离散系统】传递函数和状态空间方程离散化
  17. opencv2计算机视觉编程手册(中文)pdf
  18. 折叠共源共栅放大器(一)项目报告/实验/论文/比赛
  19. java 闭锁_从火箭发场景来学习Java多线程并发闭锁对象
  20. java电话正则屏蔽_java针对电话号码正则匹配实例

热门文章

  1. 增量式PID计算公式完整详细推导过程
  2. nfc加密卡pm3和pm5区别_为了省门禁卡的钱,买了NFC读卡器,到底值不值
  3. LSB图像隐写和峰值信噪比计算的python实现
  4. 和巨耀通杯计算机基础知识大赛,南京邮电大学第二十二届科技节活动之 “和巨耀通杯”网页设计大赛圆满落幕...
  5. 阿里旺旺在线图标,在线状态生成
  6. 使用Python将DOTA数据集的格式转换成VOC2007数据集的格式
  7. java奶茶店管理系统_奶茶店的管理信息系统.doc
  8. 超好用的卸载工具——geek(免安装)
  9. shader效果————镜子效果
  10. 线性回归相关系数c语言,线性回归中相关系数.doc