Documente Academic
Documente Profesional
Documente Cultură
Piatra Neamț
MINESWEEPER
1
SESIUNEA MAI 2019
CUPRINS
ARGUMENT,IDEA JOCULUI……………………………………………………3
LIMBAJUL DE PROGRAMARE…………………………………………………4
PREZENTAREA PROGRAMULUI………………………………....……………5
RULAREA ……………………………………………………...………….…... .17
CONCLUZII………………………………………………………………….…...21
BIBLIOGRAFIE………………………………………………...……….……... .22
2
ARGUMENT
IDEEA JOCULUI
3
LIMBAJUL DE PROGRAMARE
4
PROGRAMUL
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
#include<iomanip>
5
char s;
int steag=0;
int mine_g=0;
bool game_lost=false;
time_t timp=time(0);
time_t game_time;
7
void nr_casuta(int i,int j)
{
if(i>=0 and i<10 and j>=0 and j<10 and
tmine[i][j]!='X')
tmine[i][j]++;
}
void creare_tabel()
{
for(int i=0; i<10; i++)
for(int j=0; j<10; j++)
t[i][j]='*';
}
10
Această funcție, folosită în subprogramul ’d_casuta’, verifică dacă
pozițiile introduse sunt corecte, și dacă este ocupată de un număr sau de
o mină.
void simbol()
{
cin>>s;
switch (s)
{
case 'o' : d_casuta(); break;
case 'f' : ocupa(); break;
default : simbol();
}
}
Funcția simbol este cea care testează caracterul primit și ne
apelează funcția corespunzătoare.
Printr-un ’switch’ se verifică dacă caracterul este ’o’ se
apelează ’d_casuta’ respectiv ’ocupă’ pentru ’f’.
void ocupa()
{
int i,j;
do cin>>i>>j;
while(i<0 or i>9 or j<0 or j>9);
11
if (t[i][j]=='*')
{
t[i][j]='F';
steag++;
if(tmine[i][j]=='X')
mine_g++;
}
else if (t[i][j]=='F')
{
t[i][j]='*';
steag--;
if(tmine[i][j]=='X')
mine_g--;
}
}
void d_casuta()
{
int i,j;
12
do cin>>i>>j;
while(i<0 or i>9 or j<0 or j>9);
if(tmine[i][j]=='X')
{
t[i][j]='X';
game_lost=true;
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
if(tmine[i][j]=='X')
t[i][j]='X';
}
else show(i,j);
}
bool game_win()
{
if(steag==10 and mine_g==10) return 1;
else return 0;
}
13
Subprogramul game_win este folosit pentru a verifica dacă jocul
este sau nu câstigat comparând numărul de steaguri puse cu numărul de
bombe găsite.
int main()
{
cout<<"Reguli:" <<endl;
cout<<"Introdu 'o' , apoi valoarea lui i si j pentru a deschide
casuta[i][j].";
cout<<endl<<"Introdu 'f' , apoi valoarea lui i si j pentru a pune un
stegulet sau scoate unul din casuta [i][j]"
cout <<endl<<endl;
game();
return 0;
}
14
void game()
{
creare_tabel();
creare_mine();
while(!game_lost and !game_win())
{
game_time=time(0);
scriere(t);
/**cout<<endl<<"Mine gasite:"<<mine_g<<endl;**/
cout<<endl<<"Steaguri:"<<steag<<endl;
cout<<"Timp:"<<game_time-timp<<endl;
simbol();
system("cls");
}
if(game_lost)
{ scriere(t);
cout<<endl<<"GAME OVER"<<endl;
}
else if(game_win())
{
cout<<"Timpul tau:"<<game_time-timp<<endl;
cout<<endl<<"YOU WIN!"<<endl;
}}
15
„Game” este cea mai lungă funcție din program, și de aceea am
împărțit-o în 2 parți. Pentru început se apelează funcțiile de creare de
tabel cu simboluri și tabelul cu rezolvarea într-un while verificând de
fiecare dată dacă jocul s-a terminat. În interiorul acestui while afișăm
timpul care il actualizăm la început și numărul de steaguri plasate, iar
dacă dorim putem afișa și numărul de mine găsite. La final prin funcția
„system(„cls”)” curațăm ecranul.
A doua parte din funcția „game” este verificarea. Dacă jocul este
câștigat atunci se afișeaza timpul și mesajul „YOU WIN” , dacă nu se
execută funcția normală de scriere a matricei și mesajul „GAME
OVER”.
16
RULARE
17
2)Introducând valoarea ’o 0 0’ am nimerit o mină, iar jocul s-a încheiat.
18
3)După mai multe inserări .
19
4)La final, când am completat toata matricea de simboluri.
20
CONCLUZII
21
BIBLIOGRAFIE
https://en.wikipedia.org/wiki/Minesweeper_(video_game)
https://www.google.com/search?q=minesweeper+c%2B%2B&rlz=
1C1GGRV_enRO751RO752&oq=mi&aqs=chrome.0.69i59l2j69i6
0l2j69i57j69i60.2018j1j7&sourceid=chrome&ie=UTF-8
https://www.youtube.com/watch?v=c8wswUEfnrQ
https://www.youtube.com/watch?v=DkjOZ_Hlqbs
https://codereview.stackexchange.com/questions/141717/mineswe
eper-in-c
http://www.cplusplus.com/reference/ctime/time/?kw=time
http://www.cplusplus.com/forum/beginner/15809/
http://www.cplusplus.com/reference/cstdlib/rand/
http://www.cplusplus.com/reference/iomanip/setw/?kw=setw
http://www.cplusplus.com/forum/general/69782/
22