Skip to content

Instantly share code, notes, and snippets.

@ram0973
Last active March 28, 2023 18:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ram0973/f5d1e5cf9f1244118661628df438edda to your computer and use it in GitHub Desktop.
Save ram0973/f5d1e5cf9f1244118661628df438edda to your computer and use it in GitHub Desktop.
Minesweeper SFML
#include <SFML/Graphics.hpp>
#include <time.h>
using namespace sf;
int main()
{
srand(time(0));
RenderWindow app(VideoMode(400, 400), "Minesweeper!");
int w=32;
int grid[12][12];
int sgrid[12][12]; //for showing
Texture t;
t.loadFromFile("images/tiles.jpg");
Sprite s(t);
for (int i=1;i<=10;i++)
for (int j=1;j<=10;j++)
{
sgrid[i][j]=10;
if (rand()%5==0) grid[i][j]=9;
else grid[i][j]=0;
}
for (int i=1;i<=10;i++)
for (int j=1;j<=10;j++)
{
int n=0;
if (grid[i][j]==9) continue;
if (grid[i+1][j]==9) n++;
if (grid[i][j+1]==9) n++;
if (grid[i-1][j]==9) n++;
if (grid[i][j-1]==9) n++;
if (grid[i+1][j+1]==9) n++;
if (grid[i-1][j-1]==9) n++;
if (grid[i-1][j+1]==9) n++;
if (grid[i+1][j-1]==9) n++;
grid[i][j]=n;
}
while (app.isOpen())
{
Vector2i pos = Mouse::getPosition(app);
int x = pos.x/w;
int y = pos.y/w;
Event e;
while (app.pollEvent(e))
{
if (e.type == Event::Closed)
app.close();
if (e.type == Event::MouseButtonPressed)
if (e.key.code == Mouse::Left) sgrid[x][y]=grid[x][y];
else if (e.key.code == Mouse::Right) sgrid[x][y]=11;
}
app.clear(Color::White);
for (int i=1;i<=10;i++)
for (int j=1;j<=10;j++)
{
if (sgrid[x][y]==9) sgrid[i][j]=grid[i][j];
s.setTextureRect(IntRect(sgrid[i][j]*w,0,w,w));
s.setPosition(i*w, j*w);
app.draw(s);
}
app.display();
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment