我最近刚开始学习图形绘制,于是试着写了这样一个简单的程序。我采用的是SDL+OpenGL,由于水平有限,我只会用OpenGL绘制2D图像。源码较为凌乱,风格也偏向C语言,大家见谅。我还是个菜鸟,所以希望大家能够给我一些继续学习的建议,先谢谢大家了。
#include <iostream>
//windows头文件,在别的平台上编译需要替换成相应的头文件。
#include <Windows.h>
/////
#include <sdl/SDL.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include<time.h>
#include <tchar.h>
bool m1[770][1026],m2[770][1026];
void SDL_Process();
void OnPaint();
static void quit_tutorial( int code )
{
SDL_Quit( );
exit( code );
}
//生成细胞初始状态
void MapRand()
{
int i,j;
srand(time(0));
for(i=1;i<=768;i++)
{
for(j=1;j<=1024;j++)
{
m1[i][j]=bool(rand()%2);
m2[i][j]=m1[i][j];
}
srand(time(0)*i);
}
for(i=1;i<=1024;i++)
{
m1[0][i]=m2[0][i]=m1[768][i];
m1[769][i]=m2[769][i]=m1[1][i];
}
for(i=1;i<=768;i++)
{
m1[i][0]=m2[i][0]=m1[i][1024];
m1[i][1025]=m2[i][1025]=m1[i][1];
}
}
//计算下一次细胞的状态
void NextMap()
{
int i,j,s;
for(i=1;i<=768;i++)
for(j=1;j<=1024;j++)
{
s=0;
if(m2[i+1][j])
s++;
if(m2[i-1][j])
s++;
if(m2[i][j+1])
s++;
if(m2[i][j-1])
s++;
#include <iostream>
//windows头文件,在别的平台上编译需要替换成相应的头文件。
#include <Windows.h>
/////
#include <sdl/SDL.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include<time.h>
#include <tchar.h>
bool m1[770][1026],m2[770][1026];
void SDL_Process();
void OnPaint();
static void quit_tutorial( int code )
{
SDL_Quit( );
exit( code );
}
//生成细胞初始状态
void MapRand()
{
int i,j;
srand(time(0));
for(i=1;i<=768;i++)
{
for(j=1;j<=1024;j++)
{
m1[i][j]=bool(rand()%2);
m2[i][j]=m1[i][j];
}
srand(time(0)*i);
}
for(i=1;i<=1024;i++)
{
m1[0][i]=m2[0][i]=m1[768][i];
m1[769][i]=m2[769][i]=m1[1][i];
}
for(i=1;i<=768;i++)
{
m1[i][0]=m2[i][0]=m1[i][1024];
m1[i][1025]=m2[i][1025]=m1[i][1];
}
}
//计算下一次细胞的状态
void NextMap()
{
int i,j,s;
for(i=1;i<=768;i++)
for(j=1;j<=1024;j++)
{
s=0;
if(m2[i+1][j])
s++;
if(m2[i-1][j])
s++;
if(m2[i][j+1])
s++;
if(m2[i][j-1])
s++;