我正在尝试编写与康威的生活游戏类似的东西。一切似乎都很好,但我在#include“colour.h”中遇到了致命的错误。代码是用c ++编写的,我知道这个API属于C.我不知道如果它会有所作为,或者我必须使用另一个C ++的API。原因是在我的台式电脑上,我没有必要改变任何东西,程序运行完美。但是当我在我的另一台计算机上运行程序时,它会给代码的第一行(#include“colour.h”)带来致命的错误。我不知道为什么它会给出错误。
请参阅http://en.wikipedia.org/wiki/Conway's_Game_of_Life
#include "colours.h"
#include <sstream> //
#include <iomanip> // setw()
#include <windows.h> // setConsoleTitle(), Sleep()
#include <cstdlib> // rand(), seed()
#include <iostream> // cout
using namespace std;
// OUR DATA and CONSTANTS
const char LIFE = 'L';
const char BLANK = '.';
const int N = 20;
const int M = 20;
const int NGRID = N*M;
char world[NGRID]; // will simulate 2-dimenisonal array.
int loc(int i, int j)
{
return i*M+j*sizeof(char);
}
void gotoxy(int x, int y, char c)
{
world[ loc(x,y)] = c;
}
// OUR FUNCTIONS (ie, TOOLS) that work on our DATA
void fillWorldwith(char w[], const int N, const int M, const char stuff){
for(int i=0; i<N; i++)
for(int j=0; j<M; j++)
w[loc(i,j)]=stuff;
}
void displayWorld(char *w, const int N, const int M){
for(int i=0; i<N; i++)
{
for(int j=0; j<M; j++)
cout << setw(2) << w[loc(i,j)];
cout << endl;
}
}
// Used in applyRules as a buffer to update world.
void copyWorld(char dest[], char src[], const int N, const int M){
for(int i=0; i<N; i++)
for(int j=0; j<M; j++)
dest[loc(i,j)]= src[loc(i,j)];
}
int main()
{
SMALL_RECT windowSize; // windows
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // windows
windowSize = {0, 0, 200, 200};
SetConsoleWindowInfo(hConsole, TRUE, &windowSize); // windows
SetConsoleTitle("Game of Life"); // windows
system("cls"); // clear the console
stringstream ss; // trick to combine string and numbers
ss << "color " << Black << Yellow;
// objects are fun to use.
system( ss.str().c_str() ); // change console colour
fillWorldwith(world, N, M, BLANK); // fill whole world with BLANKS
displayWorld(world, N, M);
int x=0, y =0;
for(int time=0; time<100; time++){ // each loop, considered time.
system("cls");
displayWorld(world, N, M); // display world
gotoxy(x, y, BLANK);
x= (x+1)%N;
y= (y+1)%M;
gotoxy(x, y, LIFE);
Sleep(50);
}
return 0;
}
答案 0 :(得分:1)
colours.h
不是标准的包含文件,因此问题是它在其他计算机上不可用。您需要安装提供它的软件(如果它是您自己创建的文件,则将其复制到那里)。
答案 1 :(得分:0)
您必须正确指定编译器的默认包含目录,或将colours.h
文件放在与其他文件相同的目录中。