控制台的乐趣,美国国旗动画(Visual C++ 6.0)






2.70/5 (9投票s)
在控制台上玩得开心,制作美国国旗的动画
- 下载源代码 - 50.06 KB(Visual C++ 6.0 项目文件和 EXE)
引言
这是你做的一个项目,只是因为你认为这样做会很有趣,而且你还有一些空闲时间。 好了,让我们给一些旗帜做动画,好吗...
首先我们创建一个新项目和类,我们将我们的类命名为CFunWithConsole
,并在其中放入一些变量和函数。
项目文件是
CManCFunWithConsole_main.cpp | 主文件 |
CFunWithConsole.cpp | 类定义和方法体文件 |
CFunWithConsole.h | 类声明文件 |
CTextMode.h | 控制台文本模式图形类 |
CFunWithConsole 类
好的,我们的类CFunWithConsole
将从类CTextMode
继承一些图形函数方法,比如绘制线条、盒子和圆形,所以我们需要包含这个语法
CMandelzoom::CMandelzoom( int i) : CTextMode()
现在,在继承之后,CTextMode.h中的函数方法已经与我们的类CMandelzoom
中的函数方法“合二为一”。 我们现在可以像对待CFunWithConsole
的原生方法一样对待这些方法。 现在我们可以绘制线条、盒子和圆形了。
我们还将希望在启动时初始化的变量放在构造函数中,这样当我们的类被实例化时,这些变量就会被初始化。
类头文件 CFunWithConsole.h
现在是应用程序本身。 我们选择不在头文件中定义和体现我们的成员函数,我们将只把原型放在CFunWithConsole.h中。
#ifndef CFunWithConsole_H
#define CFunWithConsole_H
#include "CTextMode.h"
class CFunWithConsole: public CTextMode
{
public:
int shiftX[9];
int shiftY[8];
int addX[9];
int addY[8];
CFunWithConsole();
CFunWithConsole( int i);
~CFunWithConsole();
void animateFlag(void);
void VersionInfo(void);
};
#endif CFunWithConsole_H
类定义文件 CFunWithConsole.cpp
在CFunWithConsole.cpp中,我们将使用函数调用、语法和语句来定义和体现我们的成员函数。 我们的类CFunWithConsole
从类CTextMode
继承函数方法,所以我们需要包含这个语法
CFunWithConsole::CFunWithConsole( int i) : CTextMode()
构造函数
我们已经把希望在启动时初始化的函数调用放在了构造函数中,这样当我们的类被实例化时,这些函数方法就会被调用和执行。 我们还放置了一个永不退出的while(true)
循环,这样我们的旗帜就会无限期地动起来。
// CFunWithConsole.cpp
CFunWithConsole::CFunWithConsole( int i) : CTextMode()
{ //variables to be initialized
shiftX[0]=50;shiftX[1]=51;shiftX[2]=52;shiftX[3]=52; //curved alignment for flag
shiftX[4]=52;shiftX[5]=52;shiftX[6]=51;shiftX[7]=50;
shiftX[8]=53;
shiftY[0]=15;shiftY[1]=16;shiftY[2]=17;shiftY[3]=18;
shiftY[4]=19;shiftY[5]=20;shiftY[6]=21;shiftY[7]=21;
addX[0]=1;addX[1]=1;addX[2]=1;addX[3]=1;
addX[4]=1;addX[5]=1;addX[6]=1;addX[7]=1;
addX[8]=1;
addY[0]=1;addY[1]=1;addY[2]=1;addY[3]=1;
addY[4]=1;addY[5]=1;addY[6]=1;addY[7]=1;
while(true) //eternity loop
{
animateFlag();
}
}
animateFlag() 方法
animateFlag()
方法通过简单地来回移动一个字节块来动画旗帜。 在此函数调用之前,这些正在移动的字节已经在构造函数中以弯曲的方式对齐。 这些块也已经接收到一个配色方案,这个配色方案与旗帜的颜色方案相同。
void CFunWithConsole::animateFlag(void)
{
for (int ii=0;ii<9;ii++)
{
shiftX[ii]=shiftX[ii]+addX[ii];
if (shiftX[ii]<50 || shiftX[ii]>52) addX[ii]=-addX[ii];
}
txtLine(50,5,50 ,22,15); //draw flag pole
txtLine(1,22,78,22,10); //draw green grass
txtLine(1,23,78,23,10);
clrbox(shiftX[0],shiftY[0],shiftX[0]+20,shiftY[0]+1,79);
clrbox(shiftX[1],shiftY[1],shiftX[1]+20,shiftY[1]+1,254);
clrbox(shiftX[2],shiftY[2],shiftX[2]+20,shiftY[2]+1,79);
clrbox(shiftX[3],shiftY[3],shiftX[3]+20,shiftY[3]+1,254);
clrbox(shiftX[4],shiftY[4],shiftX[4]+20,shiftY[4]+1,79);
clrbox(shiftX[5],shiftY[5],shiftX[5]+20,shiftY[5]+1,254);
clrbox(shiftX[6],shiftY[6],shiftX[6]+20,shiftY[6]+1,79);
clrbox(shiftX[0]+0,shiftY[0],shiftX[0]+6,shiftY[0]+1,31);
clrbox(shiftX[1]+0,shiftY[1],shiftX[1]+6,shiftY[1]+1,31);
clrbox(shiftX[2]+0,shiftY[2],shiftX[2]+6,shiftY[2]+1,31);
clrbox(shiftX[3]+0,shiftY[3],shiftX[3]+6,shiftY[3]+1,254);
clrbox(shiftX[4]+0,shiftY[4],shiftX[4]+6,shiftY[4]+1,79);
clrbox(shiftX[5]+0,shiftY[5],shiftX[5]+6,shiftY[5]+1,254);
clrbox(shiftX[6]+0,shiftY[6],shiftX[6]+6,shiftY[6]+1,79);
clrbox(shiftX[0]+3,shiftY[0],shiftX[0]+4,shiftY[0]+1,31);
clrbox(shiftX[1]+3,shiftY[1],shiftX[1]+4,shiftY[1]+1,31);
clrbox(shiftX[2]+3,shiftY[2],shiftX[2]+4,shiftY[2]+1,31);
clrbox(shiftX[3]+3,shiftY[3],shiftX[3]+4,shiftY[3]+1,254);
clrbox(shiftX[4]+3,shiftY[4],shiftX[4]+4,shiftY[4]+1,79);
clrbox(shiftX[5]+3,shiftY[5],shiftX[5]+4,shiftY[5]+1,254);
clrbox(shiftX[6]+3,shiftY[6],shiftX[6]+4,shiftY[6]+1,79);
delay(50);
setcolor(15);
clrscr();
}
主文件
最后,文件CFunWithConsole_main.cpp是我们创建类的实例并运行我们的应用程序的地方。
#include "CFunWithConsole.h"
int main()
{
CFunWithConsole *animateFlag = new CFunWithConsole(1);
return 0;
}
控制台的颜色代码如下
黑色 | 0 |
蓝色 | 1 |
绿色 | 2 |
青色 | 3 |
红色 | 4 |
品红色 | 5 |
黄色 | 6 |
白色 | 7 |
Gray | 8 |
浅蓝色 | 9 |
浅绿色 | 10 |
浅青色 | 11 |
浅红色 | 12 |
浅洋红色 | 13 |
浅黄色 | 14 |
亮白色 | 15 |
感谢阅读。