c语⾔程序设计⼩球弹跳,C++Dos游戏设计——弹跳⼩球
作为⼀种由如数据类型、命令符等⼈⾃⼰创造的各种规定的集合,C++像法律。⽤C++编程像是运⽤法律。学习C++语法像背法律,好像很枯燥。当学完语法开始上机后,初学者练习C++编程通常⼜是做各种计算题,总觉更加枯燥。为了让学习C++⼊门语法的过程有趣⼀些,在此介绍C++Dos游戏设计,希望在写游戏代码的过程中学习C++能让⼊门者的学习更加开⼼。
这次带来的项⽬是弹跳⼩球,其游戏规则是:⼩球在墙壁间运动,若碰到墙壁或挡板则反弹,击中砖块可得分。玩家控制⼀个挡板,如果⼩球越过挡板,游戏结束。
本⽂将以循序渐进的⽅法引导读者完成项⽬。先实现⼀个会跳的⼩球,关于控制挡板、计分、画墙壁等内容将在以后发布。对于所需语法知识的学习请多查阅课本。制作本项⽬前所需知识:集成开发环境CodeBlock的初步⽤法(如新建项⽬、调试)
1、 显⽰⼀个静⽌的⼩球
所需语法知识:标识符、变量、常量、运算符与表达式、cout、for语句的⽤法。
⽬的:在控制台的第5⾏第10个字符位画出⼩球“o”。
思路:先输出4个换⾏符,再输出9个空格,再输出“o”,最后输出换⾏符(为什么?)。
代码:⾃⼰想。。。。。。
2、 显⽰⼀个下落的⼩球
所需语法知识:1所需的、清屏函数
清屏函数:实现清屏功能,包含在头⽂件stdlib.h下,使⽤时写下语句system(“cls”)即可。
⽬的:让⼀个⼩球从控制台的第10个字符位,从第1⾏掉到第9⾏。
思路:先清屏后重画,在每次重画前让⼩球出现⾏数加1。
#include
#include
using namespace std;
int main()
{
int y,x = 5;
int high = 20;
int i,j;
for(y=1;y<10;y++)//从第1⾏掉到第9⾏
{
system("cls");
for(i=0;i
cout<
for(j=0;j
cout<
cout<
while(i<10000000) //减慢速度
i++;
贪吃蛇的编程代码
}
return 0;
}
3、 显⽰⼀个上下弹跳的⼩球
所需语法知识:2所需的
⽬的:让⼀个⼩球在控制台的第10个字符位的第1⾏到第9⾏间来回移动。
思路:先清屏后重画。在每次重画前,计算⼩球位置。若⼩球下落,在每次重画前让⼩球出现⾏数加1;若⼩球上升,在每次重画前让⼩球出现⾏数减1。
4、 显⽰⼀个斜着弹跳的⼩球
所需语法知识:2所需的
⽬的:让⼀个⼩球在⼀定的区域内来回移动,当⼩球到达⼀个矩形边界后反弹。
思路:先清屏后重画。在每次重画前,计算⼩球位置。将斜向运动分解为横向运动和纵向运动,由3可类⽐出计算原理。
5、⽤函数重构程序
所需语法知识:函数
⽬的:⽤函数进⾏逻辑模块化
思路:将main函数改为
int main()
{
startup();
while(1)
{
show();
updateWithoutInput();
updateWithInput();
}
return 0;
}
现在正式开始介绍游戏算法。描述算法的⽅式是程序框图和伪代码。程序框图⾼中已经学习,因此先介绍伪代码。
伪代码
伪代码是程序框图与实际代码的中间体,它有类似代码的格式,但为了⽅便不会按如C++的具体语⾔的语法来组织。如上篇的2就可以写成下列的伪代码。
x=10,y=1
for y from 1 to y
清屏 //⽤缩进表⽰循环体
for I from 1 to y
cout<
for j from 1 to x
cout<
cout<< ‘o’<
wait for a minute
伪代码的作⽤是描述算法,不考虑实现所有细节,只考虑部分细节,所以出现了“wait for a
minute”“清屏”等语句。同时因为⼤家在学C++,所以⽤了些C++中的语句来表意,如输出换⾏⽤“cout<
⼀⾔蔽之,伪代码写得别⼈看得懂,能表述⾃⼰的算法就⾏了。
弹跳⼩球算法
我们的任务是在控制台的某个位置输出已决定的字符,然后从整体上看起来是个游戏的画图及决定输出字符的位置,使画的图能按照游戏规则与玩家交互。
程序的流程图如下:
程序开始先定义些参数,如游戏区域、球、砖头、挡板的位置、球的速度、分数、击球数。然后便进⼊画图和更新的循环,如果满⾜游戏失败条件则结束程序。我们的游戏计算机并不理解,它只是⼀个能进⾏逻辑运算和四则运算的计算器⽽已。要在计算机上实现游戏程序,必然是把游戏转换成计算题去实现。
下⾯介绍定位及更新的原理。定位⽤的是坐标法思想,即通过数对确定球、挡板、砖头等各个对象的位置等参数。
程序开始后的初始化过程如果⽤伪代码来表⽰,即是:Startup()
ballX=5,ballY=10 球的初始位置
ballvx=1,ballvy=1 速度,分运动思想
high=20,width=25 游戏区域
score=0 分数
ballNumber=0 击球数
blockX=10,blockY=1 砖块的位置
positionX=width/2,positionY=high
ridus=5
left=positionX-ridus

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。