反弹c语言作业,C语言实现反弹球游戏
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语言实现反弹球游戏相关推荐
- 反弹c语言作业,C语言实现反弹球小游戏
本文为大家分享了C语言反弹球游戏的具体代码,供大家参考,具体内容如下 这是利用函数写的C语言小游戏,用来检验自己的学习成果 反弹球的实现主要有几个子函数组成 问题也在于如何实现小球的下落,以及碰撞得分 ...
- 华师c语言作业,C语言程序设计(华师在线作业)1.doc
C语言程序设计(华师在线作业)1 本学期作业以附件形式完成1. 完成一个大小写字母自动转换的程序,输入大写字母,程序可以输出小写字母,输入小写字母,可以输出大写字母2. 用三种循环方式实现1-100的 ...
- 自动批改c语言作业,C语言 选择题功课批改
C语言 选择题作业批改 输入 第一行包含2个整数n,k,分别表示本次考试中试选择题的个数和每个选择题的分值.第二行包含一个长度为n的字符串,表示标准答案.第三行包含一个整数s,表示试卷的份数.其下的s ...
- 网吧管理系统C语言作业,C语言课程设计-网吧管理系统.doc
C语言课程设计-网吧管理系统 <通信工程专业C语言课程设计> 报 告 专 业: 通信工程 班 级: 0802 姓 名: 赵 松 指导教师: 丁 雄 二00九 年 十二 月 二十五 日 目 ...
- 输出教师信息c语言作业,C语言教师管理系统代码(最新整理)
<C语言教师管理系统代码(最新整理)>由会员分享,可在线阅读,更多相关<C语言教师管理系统代码(最新整理)(7页珍藏版)>请在人人文库网上搜索. 1.include #incl ...
- 订单查询系统c语言作业,C语言设计订单管理系统答题.doc
PAGE \* MERGEFORMAT30 C语言课程设计 随米打印订单管理系统 学 院: 计算机与信息科学学院 学生姓名: 谢润发 指导教师: 王新祥 职称 教授 专 业: 网络工程 班 级: 15 ...
- 图书馆系统c语言作业,C语言图书馆管理系统课程设计报告
<C语言图书馆管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言图书馆管理系统课程设计报告(16页珍藏版)>请在人人文库网上搜索. 1.高级语言程序设计课程设计报告 ...
- 停车场管理系统C语言作业,c语言课程设计报告停车场管理系统
c语言课程设计报告停车场管理系统 C 语言课程设计报告 --停车场管理 1 班 级: 192102 学 号: 20101003907 姓 名: 聂 彪 指导教师: 张冬梅 时 间: 2011 年 6 ...
- 湖南师范大学c语言作业,c语言上机实验(湖南师范大学).ppt
c语言上机实验(湖南师范大学) 实验内容 实验1: 熟悉上机环境和顺序结构编程练习--键盘输入与屏幕输出练习 问题1:要使下面程序的输出语句在屏幕上显示1,2,34,则从键盘输入的数据格式应为以下备选 ...
- pta c语言作业,C语言PTA平台习题与答案
第二章作业 1 ①.本题要求编写程序,输出一个短句"Welcome to You!" #include int main() { printf("Welcome to Y ...
最新文章
- make[1]: g++: Command not found
- Mysql练习题13- 员工薪水中位数
- 页面分享怎么知道通过哪条链接进来的_如何制作微信图文链接
- django restful 请求_利用 Django REST framework 构建 RESTful Web API
- 大剑无锋之什么是值传递和引用传递?【面试推荐】
- 吕述望 计算机网络专家,特稿: 中科院吕述望教授:互联网名不符实
- ocp oracle 考试报名_获得Oracle认证对拓展职业前景的影响
- 【EntityFramework学习笔记】为什么要使用迁移
- Javascript 正则表达式校验数字
- 松本行弘的程序世界读书笔记
- python xlwt_Python xlwt导出excel完整版
- 逍遥子张勇:CEO要更多思考“长远的事”和“不可为的事”
- 老鸟必备 | 如何画出优秀的架构图
- 计算机系统结构专业学什么,江苏大学专业介绍:计算机系统结构
- 微信小程序:本地存储数据
- 【离散系统】传递函数和状态空间方程离散化
- opencv2计算机视觉编程手册(中文)pdf
- 折叠共源共栅放大器(一)项目报告/实验/论文/比赛
- java 闭锁_从火箭发场景来学习Java多线程并发闭锁对象
- java电话正则屏蔽_java针对电话号码正则匹配实例
热门文章
- 增量式PID计算公式完整详细推导过程
- nfc加密卡pm3和pm5区别_为了省门禁卡的钱,买了NFC读卡器,到底值不值
- LSB图像隐写和峰值信噪比计算的python实现
- 和巨耀通杯计算机基础知识大赛,南京邮电大学第二十二届科技节活动之 “和巨耀通杯”网页设计大赛圆满落幕...
- 阿里旺旺在线图标,在线状态生成
- 使用Python将DOTA数据集的格式转换成VOC2007数据集的格式
- java奶茶店管理系统_奶茶店的管理信息系统.doc
- 超好用的卸载工具——geek(免安装)
- shader效果————镜子效果
- 线性回归相关系数c语言,线性回归中相关系数.doc