用C语言实现扫雷游戏(一)
2019-03-25 21:17
330 查看
所用编译器为vc++6.0,用到esayx图形库
#include<graphics.h> // 就是需要引用这个图形库 #include<conio.h> //void draw_box(int x,int y,int wh,int depth); int m_row=20,m_col=30,m_w=20,m_h=20; //m_row是行,m_col是列,m_w是宽,m_h是列 int m_x0=m_w+m_w/2,m_y0=m_h+m_h+m_h/2; //根据左上角边框来确定m_x0,m_y0 void draw_mine_area(); void draw_box(int x,int y,int w,int h,int depth); void main() { // int i,j; // int x,y; int w,h; w=(m_w+1)*m_col+3*m_w-1; h=(m_h+1)*m_row+3*m_h-1; initgraph(w,h); draw_mine_area(); getch(); closegraph(); } void draw_mine_area() { int i,j; int x,y; int x1,x2,y1,y2,w,h; setfillstyle(BS_SOLID); //设置固实填充 setfillcolor(LIGHTGRAY); //设置当前填充颜色 设置背景 x1=m_x0-m_w; //距左边框相差m_w/2个距离 y1=m_y0-m_h-m_h; //距上边框相差m_h/2个距离 x2=m_x0+(m_w+1)*m_col+m_w-1; //算出宽度 y2=m_y0+(m_h+1)*m_row+m_h-1; //算出高度 fillrectangle(x1,y1,x2,y2); //画出背景 x1=m_x0-3; //给雷区外添加线 y1=m_y0-3; w=x2-x1-m_w+3; h=y2-y1-m_h+3; draw_box(x1,y1,w,h,-3); x1=m_x0-3; y1=m_y0-m_h-m_h/2; w=3*m_w; h=m_h; draw_box(x1,y1,w,h,-3); x1=x2-4*m_w+3; y1=m_y0-m_h-m_h/2; w=3*m_w; h=m_h; draw_box(x1,y1,w,h,-3); y=m_y0; for(i=0;i<m_row;i++) //m_row是行,m_col是列 { x=m_x0; for(j=0;j<m_col;j++) { draw_box(x,y,m_w,m_h,3); x+=m_w+1; //+1,留出足够宽度 } y+=m_h+1; } } void draw_box(int x,int y,int w,int h,int depth) { int k,mdepth; setfillstyle(BS_SOLID); //设置固实填充,即给雷区的颜色为固实体 setfillcolor(LIGHTGRAY); //雷区的颜色为亮灰 fillrectangle(x,y,x+w,y+h); //矩形左部x坐标,top矩形上部y坐标,x+w矩形右部x坐标,x+h矩形下部y坐标。 if(depth>=0) mdepth=depth; else mdepth=-depth; if(depth>=0) setcolor(WHITE); //用于设置当前绘图前景色 else setcolor(DARKGRAY); for(k=0;k<mdepth;k++) { line(x,y+k,x+w,y+k); //把图形的左上角设置为立体边框,左上角为亮白 line(x+k,y,x+k,y+h); } if(depth>=0) setcolor(DARKGRAY); else setcolor(WHITE); for(k=0;k<mdepth;k++) { line(x+w-k,y+k,x+w-k,y+h-k); //用于画直线的函数line(x1,y1,x2,y2) (x1,y1) (x2,y2) 右下角为暗灰 line(x+k,y+h-k,x+w-k,y+h-k); }
相关文章推荐