<分区>
我用一些树制作了简单的 2D 世界生成器。不幸的是,它并不总是有效。有代码:
#include <assert.h>
#include <iostream>
#include <time.h>
#include <windows.h>
#include <conio.h>
#include <cstdlib>
using namespace std;
int main()
{
string a[64][16];
int lvl=10, num;
srand(time(NULL));
for (;;)
{
lvl=10;
//! system("cls");
for (int i=0; i<16; i++)
{
for (int j=0; j<64; j++)
{
a[j][i] = " ";
}
}
for (int j=0; j<64; j++)
{
num = rand() % 10 + 1;
cout << num;
if (num == 1)
{
if (lvl > 7)
{
lvl--;
}
}
else if (num == 2)
{
if (lvl < 15)
{
lvl++;
}
}
a[j][lvl] = "O";
num = rand() % 20 + 1;
if (num == 7)
{
assert( lvl >= 6 );
a[j][lvl-6] = "^";
a[j-1][lvl-5] = "/";
a[j+1][lvl-5] = "\\";
a[j][lvl-5] = "|";
a[j-1][lvl-4] = "/";
a[j+1][lvl-4] = "\\";
a[j][lvl-4] = "|";
a[j-1][lvl-3] = "/";
a[j+1][lvl-3] = "\\";
a[j][lvl-3] = "|";
a[j][lvl-2] = "|";
a[j][lvl-1] = "|";
}
}
cout << endl;
cout << endl << " +------------------------------------------------------------ ----+" << endl;
for (int i=0; i<16; i++)
{
cout << " |";
for (int j=0; j<64; j++)
{
cout << a[j][i];
}
cout << "|" << endl;
}
cout << " +----------------------------------------------------------------+" << endl;
//! getch();
}
return 0;
} 有时有效,有时只返回 255 (0xFF),有时返回随机代码(我认为),我不知道为什么会这样。
调试器信息:
Starting debugger:
done
Registered new type: wxString
Registered new type: STL String
Registered new type: STL Vector
Setting breakpoints
Debugger name and version: GNU gdb 6.8
Child process PID: 6244
Program received signal SIGSEGV, Segmentation fault.
In std::string::assign () ()
At E:\C++\worldGenerator\main.cpp:59