生命游戏C++代码initgraph窗口版(有功能未开放)
由于作者实力较弱,代码可能产生漏洞,请原谅!!
#include<bits/stdc++.h>#include<graphics.h>#include<conio.h>#include<thread>#include<mutex>#include<chrono>#include<cstdio>#include<vector>#include<queue>#include<windows.h>constintROWS=55;constintCOLS=112;usingnamespacestd;intd=1;//初始化生命的第几代boolrunning=false;structCell{intx,y;intf=0;}sum[ROWS][COLS],sum2[ROWS][COLS];boolISMouse_Up(intmouseX,intmouseY,intx1,inty1,intx2,inty2){return(mouseX>=x1&&mouseX<x2&&mouseY>=y1&&mouseY<y2);}inlinevoidhua_mian(intdaishu){chardaishu_[101];sprintf(daishu_,"%d",daishu);outtextxy(50,25,"第 代");outtextxy(73,25,daishu_);for(inti=1;i<COLS;i++)line(i*10,60,i*10,600);for(inti=1;i<ROWS;i++)line(0,50+i*10,1110,50+i*10);rectangle(180,10,300,50);outtextxy(215,25,"下一代");rectangle(315,10,395,50);outtextxy(340,25,"清空");rectangle(430,10,500,50);outtextxy(450,25,"开始");rectangle(505,10,575,50);outtextxy(525.5,25,"结束");}voidchu_shi_hua(){for(inti=0;i<ROWS;i++)for(intj=0;j<COLS;j++){sum[i][j].x=j*10-10;sum[i][j].y=50+i*10;}}voidqin_kong(){d=1;cleardevice();hua_mian(d);for(inti=1;i<ROWS;i++){for(intj=1;j<COLS;j++){sum[i][j].f=0;}}}voidupdate(){for(inti=1;i<ROWS;i++)for(intj=1;j<COLS;j++)sum[i][j].f=sum2[i][j].f;cleardevice();hua_mian(d);for(inti=1;i<ROWS;i++)for(intj=1;j<COLS;j++)if(sum[i][j].f)bar(sum[i][j].x,sum[i][j].y,sum[i][j].x+10,sum[i][j].y+10);}voidbegin(){}voidend(){}voidgo(){for(inti=1;i<ROWS;i++)for(intj=1;j<COLS;j++)sum2[i][j].f=0;for(inti=1;i<ROWS;i++){for(intj=1;j<COLS;j++){intlive_neighbors=0;for(intk=-1;k<=1;k++){for(intm=-1;m<=1;m++){if(k==0&&m==0)continue;intr=i+k;intc=j+m;if(r>=0&&r<ROWS&&c>=0&&c<COLS)live_neighbors+=sum[r][c].f;}}if(sum[i][j].f){sum2[i][j].f=(live_neighbors==2||live_neighbors==3)?1:0;}else{sum2[i][j].f=(live_neighbors==3)?1:0;}}}d++;return;}voidmain_(){MOUSEMSG mouse;for(;;){mouse=GetMouseMsg();if(mouse.uMsg==WM_LBUTTONDOWN){if(ISMouse_Up(mouse.x,mouse.y,180,10,300,50)){go();update();}elseif(ISMouse_Up(mouse.x,mouse.y,315,10,395,50)){qin_kong();}elseif(ISMouse_Up(mouse.x,mouse.y,430,10,500,50)){begin();}elseif(ISMouse_Up(mouse.x,mouse.y,505,10,575,50)){end();}else{for(inti=1;i<ROWS;i++)for(intj=1;j<COLS;j++)if(ISMouse_Up(mouse.x,mouse.y,sum[i][j].x,sum[i][j].y,sum[i][j].x+10,sum[i][j].y+10)){COLORREF color=getpixel(sum[i][j].x+5,sum[i][j].y+5);if(GetRValue(color)==255&&GetGValue(color)==255&&GetBValue(color)==255){setfillcolor(RGB(0,0,0));setcolor(RGB(0,0,0));bar(sum[i][j].x+1,sum[i][j].y+1,sum[i][j].x+10,sum[i][j].y+10);sum[i][j].f=0;setfillcolor(RGB(255,255,255));setcolor(RGB(255,255,255));}else{bar(sum[i][j].x,sum[i][j].y,sum[i][j].x+10,sum[i][j].y+10);sum[i][j].f=1;}break;}}}}}intmain(){initgraph(1110,600,2);//建立一个1110*600的窗口cleardevice();//初始化窗口setfillcolor(RGB(255,255,255));//定义书写颜色setcolor(RGB(255,255,255));//定义窗口颜色chu_shi_hua();//初始化数据hua_mian(d);main_();getchar();}//版权归zzxjason所有!请勿转载发帖!