Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <graphics.h>
- #include <winbgim.h>
- #include <windows.h>
- #include <iomanip>
- #include <conio.h>
- #include <stdio.h>
- #include <time.h>
- #include <cstring>
- #include <string.h>
- #include <string>
- using namespace std;
- /// VARIABILE
- // POZITIE CURSOR
- POINT p;
- // ECRAN
- DWORD _latime_ecran;
- DWORD _inaltime_ecran;
- // BUFFER
- int page = 1;
- int _buffer[3] ={1,2,3};
- // CONTINUITATE
- bool continuitate = false;
- // IESIRE
- bool iesire = false;
- // NAVIGARE
- int index = 0;
- // TEXT
- int stil_text = 8;
- // MENIU
- struct Meniu{
- int x1, x2, y1, y2;
- int centru_x, centru_y;
- int cod_culoare;
- bool colt_ss, colt_sj, colt_ds, colt_dj;
- }_meniu[4][5];
- bool _limitator_click = true;
- // joc-G
- int index_joc_G;
- struct Tabla{
- int cod_culoare;
- //coordonate
- int centru_x;
- int centru_y;
- int marime;
- int x1, x2, y1, y2;
- }_tabla;
- struct ZonaJoc{
- int x1, x2, y1, y2;
- int cod_culoare;
- int jucator;
- }_zona_joc[7][7];
- int jucator_curent = 1;
- bool masca = false;
- int ultimulCastigator = 0;
- bool consola = false;
- char txt_nou[200];
- char istoric[10][200];
- // TIMP
- /// FUNCTII
- // SETARI
- void _dimensiuni_ecran();
- void _seteaza_ecran();
- void _buffer_dublu(bool TIP);
- void _resetare_buffer();
- // MENIU
- void _initializare_grafica_meniu();
- void _afisare_meniu();
- void _resetare_colturi();
- void _detectare_colturi();
- void _afisare_colturi();
- void _margine_fixa_colturi();
- void _actionare_butoane(int x, int y);
- void _detectare_butoane();
- void _tranzitie_meniu(int i,int ii);
- void _margine(int i, int ii);
- void _tranzitie_margini(int i, int ii);
- void _setare_meniu();
- void _margine_dubla(int i, int ii);
- // JOC-G
- void _main_jocG();
- void _titlu();
- void _ecran_negru();
- void _setare_tabla(int i, int ii);
- void _afisare_butoane_meniu();
- void _setare_zona_joc();
- void _actualizare_culori();
- void _afisare_zona_joc();
- void _comenzi_consolosa();
- void _masca_zona_joc();
- void _detectare_miscare();
- void _tranzitie_glisare(int i, int ii, int t);
- void _detectare_castigator(int i, int ii);
- void _afisare_player_curent(int TIP);
- void _afisare_ultmul_castigator();
- void _set_AI_zone();
- void _AI();
- void _consola();
- // CEAS
- void ceas(int i, int ii);
- int main()
- {
- /// INITIALIZARE
- _seteaza_ecran();
- _initializare_grafica_meniu();
- /// INITILIAZARE JOC-G
- _setare_tabla(_inaltime_ecran/2 ,_inaltime_ecran/2 + 40);
- _setare_zona_joc();
- /// RULARE
- while(!iesire){
- GetCursorPos(&p);
- if((GetKeyState(VK_LBUTTON) & 0x100) == 0) _limitator_click = true;
- _buffer_dublu(false);
- {
- switch(index){
- /** MENIU **/ { case 0:
- {
- cleardevice();
- _afisare_meniu();
- _setare_meniu();
- _afisare_colturi();
- _detectare_butoane();
- ceas(1,4);
- }
- break;
- }
- /** TITLU / INFORMATII **/ { case 2:
- {
- _margine(1,2);
- _margine_dubla(1,2);
- }
- break;
- }
- /** JOC-G **/ { case 1:
- {
- _margine(1,1);
- _main_jocG();
- _margine_dubla(1,1);
- }
- break;
- }
- /** **/ { case 4:
- {
- _margine(1,4);
- _margine_dubla(1,4);
- }
- break;
- }
- /** **/ { case 5:
- {
- _margine(2,1);
- _afisare_zona_joc();
- _afisare_butoane_meniu();
- _margine_dubla(2,1);
- }
- break;
- }
- /** **/ { case 6:
- {
- _margine(2,2);
- _margine_dubla(2,2);
- }
- break;
- }
- /** **/ { case 7:
- {
- _margine(2,3);
- _margine_dubla(2,3);
- }
- break;
- }
- /** **/ { case 8:
- {
- _margine(2,4);
- _margine_dubla(2,4);
- }
- break;
- }
- /** **/ { case 9:
- {
- _margine(3,1);
- _margine_dubla(3,1);
- }
- break;
- }
- /** **/ { case 10:
- {
- _margine(3,2);
- _margine_dubla(3,2);
- }
- break;
- }
- /** **/ { case 11:
- {
- _margine(3,3);
- _margine_dubla(3,3);
- }
- break;
- }
- /** **/ { case 12:
- {
- iesire = true;
- }
- break;
- }
- }
- }
- _resetare_buffer();
- }
- return 0;
- }
- /// SETARI
- void _dimensiuni_ecran(){
- _latime_ecran = GetSystemMetrics(SM_CXSCREEN) ;
- _inaltime_ecran = GetSystemMetrics(SM_CYSCREEN) ;
- }
- void _seteaza_ecran(){
- _dimensiuni_ecran();
- initwindow(_latime_ecran, _inaltime_ecran, "", -3, -3);
- }
- void _buffer_dublu(bool TIP){
- if(TIP == false){
- setactivepage(_buffer[0]);
- setvisualpage(_buffer[2]);
- cleardevice();
- } else {
- setactivepage(_buffer[0]);
- setvisualpage(_buffer[2]);
- }
- }
- void _resetare_buffer(){
- int aux = _buffer[0];
- _buffer[0] = _buffer[1];
- _buffer[1] = _buffer[2];
- _buffer[2] = aux;
- }
- /// MENIU
- void _initializare_grafica_meniu(){
- for(int i = 1; i <= 3; i++) for(int ii = 1; ii <= 4; ii++){
- _meniu[i][ii].x1 = _latime_ecran / 4 * ( ii - 1 ) + 2;
- _meniu[i][ii].x2 = _latime_ecran / 4 * ii - 2;
- _meniu[i][ii].y1 = _inaltime_ecran / 3 * ( i - 1 ) + 2;
- _meniu[i][ii].y2 = _inaltime_ecran / 3 * i - 2;
- _meniu[i][ii].centru_x = ( _meniu[i][ii].x1 + _meniu[i][ii].x2 ) / 2;
- _meniu[i][ii].centru_y = ( _meniu[i][ii].y1 + _meniu[i][ii].y2 ) / 2;
- }
- _meniu[1][1].cod_culoare = 3;
- _meniu[1][2].cod_culoare = 2;
- _meniu[1][3].cod_culoare = 2;
- _meniu[1][4].cod_culoare = 4;
- _meniu[2][1].cod_culoare = 5;
- _meniu[2][2].cod_culoare = 12;
- _meniu[2][3].cod_culoare = 9;
- _meniu[2][4].cod_culoare = 10;
- _meniu[3][1].cod_culoare = 11;
- _meniu[3][2].cod_culoare = 6;
- _meniu[3][3].cod_culoare = 13;
- _meniu[3][4].cod_culoare = 14;
- /// PARTICULARITATI
- _meniu[1][2].x2 = _meniu[1][3].x2;
- _meniu[1][3].x1 = _meniu[1][2].x1;
- _meniu[1][2].centru_x = ( _meniu[1][2].x1 + _meniu[1][2].x2 ) / 2;
- _meniu[1][3].centru_x = ( _meniu[1][3].x1 + _meniu[1][3].x2 ) / 2;
- }
- void _afisare_meniu(){
- setbkcolor(BLACK);
- for(int i = 1; i <= 3; i++) for(int ii = 1; ii<=4; ii++){
- setcolor(_meniu[i][ii].cod_culoare);
- rectangle(_meniu[i][ii].x1, _meniu[i][ii].y1, _meniu[i][ii].x2, _meniu[i][ii].y2);
- setfillstyle(SOLID_FILL, _meniu[i][ii].cod_culoare);
- floodfill(_meniu[i][ii].centru_x, _meniu[i][ii].centru_y, _meniu[i][ii].cod_culoare);
- }
- }
- void _resetare_colturi(){
- for(int i = 1; i <= 3; i++) for(int ii = 1; ii <= 4; ii++){
- _meniu[i][ii].colt_ss = false;
- _meniu[i][ii].colt_sj = false;
- _meniu[i][ii].colt_ds = false;
- _meniu[i][ii].colt_dj = false;
- }
- }
- void _detectare_colturi(){
- _resetare_colturi();
- for(int i = 1; i <= 3; i++) for(int ii = 1; ii <= 4; ii++){
- if(i == 1 && ii == 2)ii++;
- if( p.x > _meniu[i][ii].x1 && p.x < _meniu[i][ii].centru_x &&
- p.y > _meniu[i][ii].y1 && p.y < _meniu[i][ii].centru_y) _meniu[i][ii].colt_ss = true;
- if( p.x >= _meniu[i][ii].centru_x && p.x <= _meniu[i][ii].x2 &&
- p.y >= _meniu[i][ii].y1 && p.y <= _meniu[i][ii].centru_y) _meniu[i][ii].colt_ds = true;
- if( p.x >= _meniu[i][ii].x1 && p.x <= _meniu[i][ii].centru_x &&
- p.y >= _meniu[i][ii].centru_y && p.y <= _meniu[i][ii].y2) _meniu[i][ii].colt_sj = true;
- if( p.x >= _meniu[i][ii].centru_x && p.x <= _meniu[i][ii].x2 &&
- p.y >= _meniu[i][ii].centru_y && p.y <= _meniu[i][ii].y2) _meniu[i][ii].colt_dj = true;
- }
- }
- void _afisare_colturi(){
- _detectare_colturi();
- _margine_fixa_colturi();
- for(int i = 1; i <= 3; i++) for(int ii = 1; ii <= 4; ii++){
- if(i == 1 && ii == 2)ii++;
- if(_meniu[i][ii].colt_ss) {
- setcolor(BLACK);
- line(_meniu[i][ii].x1, _meniu[i][ii].y1, _meniu[i][ii].x2, _meniu[i][ii].y1);
- line(_meniu[i][ii].x1, _meniu[i][ii].y1, _meniu[i][ii].x1, _meniu[i][ii].y2);
- line(_meniu[i][ii].x1 + 6, _meniu[i][ii].y1 + 6, _meniu[i][ii].x2, _meniu[i][ii].y1);
- line(_meniu[i][ii].x1 + 6, _meniu[i][ii].y1 + 6, _meniu[i][ii].x1, _meniu[i][ii].y2);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(_meniu[i][ii].x1 + 3, _meniu[i][ii].y1 + 3, BLACK);
- }
- if(_meniu[i][ii].colt_ds) {
- setcolor(BLACK);
- line(_meniu[i][ii].x1, _meniu[i][ii].y1, _meniu[i][ii].x2, _meniu[i][ii].y1);
- line(_meniu[i][ii].x2, _meniu[i][ii].y1, _meniu[i][ii].x2, _meniu[i][ii].y2);
- line(_meniu[i][ii].x1, _meniu[i][ii].y1, _meniu[i][ii].x2 - 6, _meniu[i][ii].y1 + 6);
- line(_meniu[i][ii].x2 - 6, _meniu[i][ii].y1 + 6, _meniu[i][ii].x2, _meniu[i][ii].y2);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(_meniu[i][ii].x2 - 3, _meniu[i][ii].y1 + 3, BLACK);
- }
- if(_meniu[i][ii].colt_sj) {
- setcolor(BLACK);
- line(_meniu[i][ii].x1, _meniu[i][ii].y2, _meniu[i][ii].x2, _meniu[i][ii].y2);
- line(_meniu[i][ii].x1, _meniu[i][ii].y1, _meniu[i][ii].x1, _meniu[i][ii].y2);
- line(_meniu[i][ii].x1 + 6, _meniu[i][ii].y2 - 6, _meniu[i][ii].x2, _meniu[i][ii].y2);
- line(_meniu[i][ii].x1, _meniu[i][ii].y1, _meniu[i][ii].x1 + 6, _meniu[i][ii].y2 - 6);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(_meniu[i][ii].x1 + 3, _meniu[i][ii].y2 - 3, BLACK);
- }
- if(_meniu[i][ii].colt_dj) {
- setcolor(BLACK);
- line(_meniu[i][ii].x1, _meniu[i][ii].y2, _meniu[i][ii].x2, _meniu[i][ii].y2);
- line(_meniu[i][ii].x2, _meniu[i][ii].y1, _meniu[i][ii].x2, _meniu[i][ii].y2);
- line(_meniu[i][ii].x1, _meniu[i][ii].y2, _meniu[i][ii].x2 - 6, _meniu[i][ii].y2 - 6);
- line(_meniu[i][ii].x2, _meniu[i][ii].y1, _meniu[i][ii].x2 - 6, _meniu[i][ii].y2 - 6);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(_meniu[i][ii].x2 - 3, _meniu[i][ii].y2 - 3, BLACK);
- }
- }
- }
- void _margine_fixa_colturi(){
- if(_meniu[1][1].colt_ss == true) _meniu[1][1].colt_ss =false;
- if(_meniu[1][1].colt_sj == true) _meniu[1][1].colt_sj =false;
- if(_meniu[1][1].colt_ds == true) _meniu[1][1].colt_ds =false;
- if(_meniu[1][4].colt_ss == true) _meniu[1][4].colt_ss =false;
- if(_meniu[1][4].colt_dj == true) _meniu[1][4].colt_dj =false;
- if(_meniu[1][4].colt_ds == true) _meniu[1][4].colt_ds =false;
- if(_meniu[3][1].colt_ss == true) _meniu[3][1].colt_ss =false;
- if(_meniu[3][1].colt_sj == true) _meniu[3][1].colt_sj =false;
- if(_meniu[3][1].colt_dj == true) _meniu[3][1].colt_dj =false;
- if(_meniu[3][4].colt_dj == true) _meniu[3][4].colt_dj =false;
- if(_meniu[3][4].colt_sj == true) _meniu[3][4].colt_sj =false;
- if(_meniu[3][4].colt_ds == true) _meniu[3][4].colt_ds =false;
- if(_meniu[1][3].colt_ss == true) _meniu[1][3].colt_ss =false;
- if(_meniu[1][3].colt_ds == true) _meniu[1][3].colt_ds =false;
- if(_meniu[2][1].colt_ss == true) _meniu[2][1].colt_ss =false;
- if(_meniu[2][1].colt_sj == true) _meniu[2][1].colt_sj =false;
- if(_meniu[2][4].colt_dj == true) _meniu[2][4].colt_dj =false;
- if(_meniu[2][4].colt_ds == true) _meniu[2][4].colt_ds =false;
- if(_meniu[3][2].colt_dj == true) _meniu[3][2].colt_dj =false;
- if(_meniu[3][2].colt_sj == true) _meniu[3][2].colt_sj =false;
- if(_meniu[3][3].colt_dj == true) _meniu[3][3].colt_dj =false;
- if(_meniu[3][3].colt_sj == true) _meniu[3][3].colt_sj =false;
- }
- void _actionare_butoane(int x, int y){
- switch(x){
- case 1:
- switch(y){
- case 1:
- index = 1;
- _tranzitie_meniu(x,y);
- _limitator_click = true;
- _tranzitie_margini(x,y);
- break;
- case 3:
- index = 2;
- _tranzitie_meniu(x,y);
- _limitator_click = true;
- _tranzitie_margini(x,y);
- break;
- case 4:
- index = 0;
- break;
- }
- break;
- case 2:
- switch(y){
- case 1:
- index = 5;
- _tranzitie_meniu(x,y);
- _limitator_click = true;
- _tranzitie_margini(x,y);
- break;
- case 2:
- index = 6;
- _tranzitie_meniu(x,y);
- _limitator_click = true;
- _tranzitie_margini(x,y);
- break;
- case 3:
- index = 7;
- _tranzitie_meniu(x,y);
- _limitator_click = true;
- _tranzitie_margini(x,y);
- break;
- case 4:
- index = 8;
- _tranzitie_meniu(x,y);
- _limitator_click = true;
- _tranzitie_margini(x,y);
- break;
- }
- break;
- case 3:
- switch(y){
- case 1:
- index = 9;
- _tranzitie_meniu(x,y);
- _limitator_click = true;
- _tranzitie_margini(x,y);
- break;
- case 2:
- index = 10;
- _tranzitie_meniu(x,y);
- _limitator_click = true;
- _tranzitie_margini(x,y);
- break;
- case 3:
- index = 11;
- _tranzitie_meniu(x,y);
- _limitator_click = true;
- _tranzitie_margini(x,y);
- break;
- case 4:
- iesire = true;
- break;
- }
- break;
- }
- }
- void _detectare_butoane(){
- _resetare_colturi();
- _detectare_colturi();
- for(int i = 1; i <= 3; i++) for(int j = 1; j <= 4; j++){
- if(i == 1 && j == 2) j++;
- if(_meniu[i][j].colt_ss == true || _meniu[i][j].colt_ds == true ||
- _meniu[i][j].colt_sj == true || _meniu[i][j].colt_dj == true ){
- if((GetKeyState(VK_LBUTTON) & 0x100) != 0){
- if(_limitator_click == true){_actionare_butoane(i,j); _limitator_click = false;
- }
- }
- }
- }
- }
- void _tranzitie_meniu(int i, int ii){
- int x1 = _meniu[i][ii].x1;
- int x2 = _meniu[i][ii].x2;
- int y1 = _meniu[i][ii].y1;
- int y2 = _meniu[i][ii].y2;
- while(x1 >= 0 || x2 <= _latime_ecran || y1 >= 0 || y2 <= _inaltime_ecran){
- _buffer_dublu(false);
- _afisare_meniu();
- setcolor(WHITE);
- rectangle(x1, y1, x2, y2);
- setfillstyle(SOLID_FILL, _meniu[i][ii].cod_culoare);
- floodfill(_meniu[i][ii].centru_x, _meniu[i][ii].centru_y, WHITE);
- x1 -= 40;
- x2 += 40;
- y1 -= 40;
- y2 += 40;
- delay(10);
- _resetare_buffer();
- }
- }
- void _margine(int i, int ii){
- setcolor(_meniu[i][ii].cod_culoare);
- circle(0,0, 90);
- setfillstyle(SOLID_FILL, _meniu[i][ii].cod_culoare);
- floodfill(45,45,_meniu[i][ii].cod_culoare);
- setcolor(BLACK);
- circle(0,0, 60);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(15, 15, BLACK);
- setcolor(_meniu[i][ii].cod_culoare);
- line(13,21,19,15);
- line(14,21,20,15);
- line(15,21,21,15);
- line(12,22,36,22);
- line(11,23,36,23);
- line(12,24,36,24);
- line(13,25,19,31);
- line(14,25,20,31);
- line(15,25,21,31);
- if((p.x <= 60 && p.y <= 1) ||
- (p.x <= 59 && p.y <= 2) ||
- (p.x <= 58 && p.y <= 3) ||
- (p.x <= 57 && p.y <= 4) ||
- (p.x <= 56 && p.y <= 5) ||
- (p.x <= 55 && p.y <= 6) ||
- (p.x <= 54 && p.y <= 7) ||
- (p.x <= 53 && p.y <= 8) ||
- (p.x <= 52 && p.y <= 9) ||
- (p.x <= 51 && p.y <= 10) ||
- (p.x <= 50 && p.y <= 11) ||
- (p.x <= 49 && p.y <= 12) ||
- (p.x <= 48 && p.y <= 13) ||
- (p.x <= 47 && p.y <= 14) ||
- (p.x <= 46 && p.y <= 15) ||
- (p.x <= 45 && p.y <= 16) ||
- (p.x <= 44 && p.y <= 17) ||
- (p.x <= 43 && p.y <= 18) ||
- (p.x <= 42 && p.y <= 19) ||
- (p.x <= 41 && p.y <= 20) ||
- (p.x <= 40 && p.y <= 21) ||
- (p.x <= 39 && p.y <= 22) ||
- (p.x <= 38 && p.y <= 23) ||
- (p.x <= 37 && p.y <= 24) ||
- (p.x <= 36 && p.y <= 25) ||
- (p.x <= 35 && p.y <= 26) ||
- (p.x <= 34 && p.y <= 27) ||
- (p.x <= 33 && p.y <= 28) ||
- (p.x <= 32 && p.y <= 29) ||
- (p.x <= 31 && p.y <= 30) ||
- (p.x <= 30 && p.y <= 31) ||
- (p.x <= 29 && p.y <= 32) ||
- (p.x <= 28 && p.y <= 33) ||
- (p.x <= 27 && p.y <= 34) ||
- (p.x <= 26 && p.y <= 35) ||
- (p.x <= 25 && p.y <= 36) ||
- (p.x <= 24 && p.y <= 37) ||
- (p.x <= 23 && p.y <= 38) ||
- (p.x <= 22 && p.y <= 39) ||
- (p.x <= 21 && p.y <= 40) ||
- (p.x <= 20 && p.y <= 41) ||
- (p.x <= 19 && p.y <= 42) ||
- (p.x <= 18 && p.y <= 43) ||
- (p.x <= 17 && p.y <= 44) ||
- (p.x <= 16 && p.y <= 45) ||
- (p.x <= 15 && p.y <= 46) ||
- (p.x <= 14 && p.y <= 47) ||
- (p.x <= 13 && p.y <= 48) ||
- (p.x <= 12 && p.y <= 49) ||
- (p.x <= 11 && p.y <= 50) ||
- (p.x <= 10 && p.y <= 51) ||
- (p.x <= 9 && p.y <= 52) ||
- (p.x <= 8 && p.y <= 53) ||
- (p.x <= 7 && p.y <= 54) ||
- (p.x <= 6 && p.y <= 55) ||
- (p.x <= 5 && p.y <= 56) ||
- (p.x <= 4 && p.y <= 57) ||
- (p.x <= 3 && p.y <= 58) ||
- (p.x <= 2 && p.y <= 59) ||
- (p.x <= 1 && p.y <= 60) ){
- setfillstyle(SOLID_FILL, _meniu[i][ii].cod_culoare);
- floodfill(1,1, _meniu[i][ii].cod_culoare);
- setcolor(WHITE);
- line(13,21,19,15);
- line(14,21,20,15);
- line(15,21,21,15);
- line(12,22,36,22);
- line(11,23,36,23);
- line(12,24,36,24);
- line(13,25,19,31);
- line(14,25,20,31);
- line(15,25,21,31);
- if((GetKeyState(VK_LBUTTON) & 0x100) != 0){
- if(_limitator_click == true){
- if(index_joc_G != 0){
- index_joc_G = 0;
- jucator_curent = 1;
- _setare_zona_joc();
- _limitator_click = false;
- }else{
- index = 0;
- _limitator_click = false;
- }
- }}
- }
- }
- void _tranzitie_margini(int i, int ii){
- int x = 50;
- while(x <= _latime_ecran ){
- _buffer_dublu(false);
- setbkcolor(_meniu[i][ii].cod_culoare);
- setcolor(BLACK);
- rectangle(0,31, x, _inaltime_ecran - 31);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(x-1, _inaltime_ecran/2, BLACK);
- if(x >= _latime_ecran - 31) x = _latime_ecran - 31;
- else x += 40;
- _resetare_buffer();
- delay(1);
- }
- for(int r = 30; r <= 60; r++){
- _buffer_dublu(false);
- setbkcolor(_meniu[i][ii].cod_culoare);
- setcolor(BLACK);
- rectangle(0,31, _latime_ecran, _inaltime_ecran - 31);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(_latime_ecran/2, _inaltime_ecran/2, BLACK);
- setcolor(_meniu[i][ii].cod_culoare);
- circle(0,0, r+30);
- setfillstyle(SOLID_FILL, _meniu[i][ii].cod_culoare);
- floodfill(32,32,_meniu[i][ii].cod_culoare);
- setcolor(BLACK);
- circle(0,0, r);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(1, 1, BLACK);
- delay(1);
- _resetare_buffer();
- }
- }
- void _setare_meniu(){
- /// 1 - 1
- setcolor(BLACK);
- settextstyle(stil_text, 0, 16);
- int TW = textwidth ("Joc-G");
- int TH = textheight("Joc-G");
- setbkcolor(_meniu[1][1].cod_culoare);
- outtextxy(_meniu[1][1].centru_x - TW/2, _meniu[1][1].centru_y - TH/2, "Joc-G");
- setbkcolor(BLACK);
- /// 1 - 3
- setcolor(BLACK);
- settextstyle(stil_text, 0, 18);
- TW = textwidth ("PROJECTS");
- TH = textheight("PROJECTS");
- setbkcolor(_meniu[1][3].cod_culoare);
- outtextxy(_meniu[1][3].centru_x - TW/2, _meniu[1][3].centru_y - TH/2, "PROJECTS");
- setbkcolor(BLACK);
- setcolor(BLACK);
- settextstyle(stil_text, 0, 4);
- TW = textwidth ("! Informatii ");
- TH = textheight("! Informatii ");
- setbkcolor(_meniu[1][3].cod_culoare);
- outtextxy(_meniu[1][3].centru_x + 50 - 4, _meniu[1][3].centru_y/3*5 - TH/2, "! Informatii ");
- setbkcolor(BLACK);
- circle(_meniu[1][3].centru_x + 56, _meniu[1][3].centru_y/3*5, 19);
- circle(_meniu[1][3].centru_x + 56, _meniu[1][3].centru_y/3*5, 18);
- circle(_meniu[1][3].centru_x + 56, _meniu[1][3].centru_y/3*5, 17);
- /// 3 - 4
- setcolor(BLACK);
- settextstyle(stil_text, 0, 16);
- TW = textwidth ("Iesire");
- TH = textheight("Iesire");
- setbkcolor(_meniu[3][4].cod_culoare);
- outtextxy(_meniu[3][4].centru_x - TW/2, _meniu[3][4].centru_y - TH/2, "Iesire");
- setbkcolor(BLACK);
- }
- void _margine_dubla(int i, int ii){
- setbkcolor(BLACK);
- setcolor(_meniu[i][ii].cod_culoare);
- setfillstyle(SOLID_FILL, _meniu[i][ii].cod_culoare);
- rectangle(60,0,_latime_ecran,30);
- floodfill(_latime_ecran/2,15,_meniu[i][ii].cod_culoare);
- rectangle(0,_inaltime_ecran - 30,_latime_ecran,_inaltime_ecran);
- floodfill(_latime_ecran/2,_inaltime_ecran - 15,_meniu[i][ii].cod_culoare);
- }
- /// joc-G
- void _main_jocG(){
- switch(index_joc_G){
- case 0:
- {
- _titlu();
- _afisare_zona_joc();
- _afisare_butoane_meniu();
- _afisare_ultmul_castigator();
- }
- break;
- case 1:
- {
- _afisare_zona_joc();
- _comenzi_consolosa();
- _set_AI_zone();
- _detectare_miscare();
- _afisare_player_curent(2);
- _AI();
- _consola();
- }
- break;
- case 2:
- {
- _afisare_zona_joc();
- _comenzi_consolosa();
- _detectare_miscare();
- _afisare_player_curent(1);
- _consola();
- }
- break;
- }
- }
- void _titlu(){
- setcolor(WHITE);
- settextstyle(stil_text, 0, 17);
- //setbkcolor(BLACK);
- outtextxy(_latime_ecran/2 + 20, 125 , "Patratele glisante");
- }
- void _setare_tabla(int i, int ii){
- _tabla.centru_x = i;
- _tabla.centru_y = ii;
- _tabla.marime = 500;
- _tabla.x1 = _tabla.centru_x - _tabla.marime/2;
- _tabla.x2 = _tabla.centru_x + _tabla.marime/2;
- _tabla.y1 = _tabla.centru_y - _tabla.marime/2;
- _tabla.y2 = _tabla.centru_y + _tabla.marime/2;
- }
- void _afisare_butoane_meniu(){
- int b1x1 = _latime_ecran/2 + 120; int b1x2 = b1x1 + 400; int b1y1 = 250; int b1y2 = 320;
- int b2x1 = _latime_ecran/2 + 120; int b2x2 = b1x1 + 400; int b2y1 = 360; int b2y2 = 430;
- setcolor(_meniu[1][1].cod_culoare);
- rectangle(b1x1 + 0, b1y1 + 0, b1x2 - 0, b1y2 - 0);
- rectangle(b1x1 + 1, b1y1 + 1, b1x2 - 1, b1y2 - 1);
- rectangle(b1x1 + 2, b1y1 + 2, b1x2 - 2, b1y2 - 2);
- rectangle(b1x1 + 3, b1y1 + 3, b1x2 - 3, b1y2 - 3);
- rectangle(b1x1 + 4, b1y1 + 4, b1x2 - 4, b1y2 - 4);
- circle(b1x1, b1y1, 30); circle(b1x1, b1y1, 29); circle(b1x1, b1y1, 28); circle(b1x1, b1y1, 27); circle(b1x1, b1y1, 26);
- circle(b1x2, b1y1, 30); circle(b1x2, b1y1, 29); circle(b1x2, b1y1, 28); circle(b1x2, b1y1, 27); circle(b1x2, b1y1, 26);
- circle(b1x1, b1y2, 30); circle(b1x1, b1y2, 29); circle(b1x1, b1y2, 28); circle(b1x1, b1y2, 27); circle(b1x1, b1y2, 26);
- circle(b1x2, b1y2, 30); circle(b1x2, b1y2, 29); circle(b1x2, b1y2, 28); circle(b1x2, b1y2, 27); circle(b1x2, b1y2, 26);
- setcolor(BLACK);
- circle(b1x1, b1y1, 25);
- circle(b1x2, b1y1, 25);
- circle(b1x1, b1y2, 25);
- circle(b1x2, b1y2, 25);
- setfillstyle(SOLID_FILL,BLACK);
- floodfill(b1x1,b1y1, BLACK);
- floodfill(b1x2,b1y1, BLACK);
- floodfill(b1x1,b1y2, BLACK);
- floodfill(b1x2,b1y2, BLACK);
- rectangle(b1x1 - 1, b1y1 - 1, b1x2 + 1, b1y2 + 1);
- setcolor(RED);
- rectangle(b1x1 - 2, b1y1 - 2, b1x2 + 2, b1y2 + 2);
- rectangle(b1x1 - 32, b1y1 - 32, b1x2 + 32, b1y2 + 32);
- setfillstyle(SOLID_FILL, RED);
- floodfill(b1x1 - 5, b1y1 - 5, RED);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(b1x1 - 5, b1y1 - 5, BLACK);
- /////////
- setcolor(_meniu[1][1].cod_culoare);
- rectangle(b2x1 + 0, b2y1 + 0, b2x2 - 0, b2y2 - 0);
- rectangle(b2x1 + 1, b2y1 + 1, b2x2 - 1, b2y2 - 1);
- rectangle(b2x1 + 2, b2y1 + 2, b2x2 - 2, b2y2 - 2);
- rectangle(b2x1 + 3, b2y1 + 3, b2x2 - 3, b2y2 - 3);
- rectangle(b2x1 + 4, b2y1 + 4, b2x2 - 4, b2y2 - 4);
- circle(b2x1, b2y1, 30); circle(b2x1, b2y1, 29); circle(b2x1, b2y1, 28); circle(b2x1, b2y1, 27); circle(b2x1, b2y1, 26);
- circle(b2x2, b2y1, 30); circle(b2x2, b2y1, 29); circle(b2x2, b2y1, 28); circle(b2x2, b2y1, 27); circle(b2x2, b2y1, 26);
- circle(b2x1, b2y2, 30); circle(b2x1, b2y2, 29); circle(b2x1, b2y2, 28); circle(b2x1, b2y2, 27); circle(b2x1, b2y2, 26);
- circle(b2x2, b2y2, 30); circle(b2x2, b2y2, 29); circle(b2x2, b2y2, 28); circle(b2x2, b2y2, 27); circle(b2x2, b2y2, 26);
- setcolor(BLACK);
- circle(b2x1, b2y1, 25);
- circle(b2x2, b2y1, 25);
- circle(b2x1, b2y2, 25);
- circle(b2x2, b2y2, 25);
- setfillstyle(SOLID_FILL,BLACK);
- floodfill(b2x1,b2y1, BLACK);
- floodfill(b2x2,b2y1, BLACK);
- floodfill(b2x1,b2y2, BLACK);
- floodfill(b2x2,b2y2, BLACK);
- rectangle(b2x1 - 1, b2y1 - 1, b2x2 + 1, b2y2 + 1);
- setcolor(RED);
- rectangle(b2x1 - 2, b2y1 - 2, b2x2 + 2, b2y2 + 2);
- rectangle(b2x1 - 32, b2y1 - 32, b2x2 + 32, b2y2 + 32);
- setfillstyle(SOLID_FILL, RED);
- floodfill(b2x1 - 5, b2y1 - 5, RED);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(b2x1 - 5, b2y1 - 5, BLACK);
- if(p.x >= b1x1 && p.x <= b1x2 && p.y >= b1y1 && p.y <= b1y2){
- setfillstyle(SOLID_FILL, _meniu[1][1].cod_culoare);
- floodfill(b1x1 + 60, b1y1 + 10, _meniu[1][1].cod_culoare);
- setcolor(WHITE);
- settextstyle(stil_text, 0, 6);
- int TW = textwidth ("1 JUCATOR");
- int TH = textheight("1 JUCATOR");
- setbkcolor(_meniu[1][1].cod_culoare);
- outtextxy((b1x1 + b1x2)/2 - TW/2, (b1y1 + b1y2)/2 - TH/2, "1 JUCATOR");
- setbkcolor(BLACK);
- if((GetKeyState(VK_LBUTTON) & 0x100) != 0)
- if(_limitator_click == true){
- index_joc_G = 1;
- _limitator_click = false;
- _setare_zona_joc();
- ultimulCastigator = 0;
- }
- }else{
- setcolor(WHITE);
- settextstyle(stil_text, 0, 6);
- int TW = textwidth ("1 JUCATOR");
- int TH = textheight("1 JUCATOR");
- setbkcolor(BLACK);
- outtextxy((b1x1 + b1x2)/2 - TW/2, (b1y1 + b1y2)/2 - TH/2, "1 JUCATOR");
- setbkcolor(BLACK);
- }
- if(p.x >= b2x1 && p.x <= b2x2 && p.y >= b2y1 && p.y <= b2y2){
- setfillstyle(SOLID_FILL, _meniu[1][1].cod_culoare);
- floodfill(b2x1 + 60, b2y1 + 10, _meniu[1][1].cod_culoare);
- setcolor(WHITE);
- settextstyle(stil_text, 0, 6);
- int TW = textwidth ("2 JUCATORI");
- int TH = textheight("2 JUCATORI");
- setbkcolor(_meniu[1][1].cod_culoare);
- outtextxy((b2x1 + b2x2)/2 - TW/2, (b2y1 + b2y2)/2 - TH/2, "2 JUCATORI");
- setbkcolor(BLACK);
- if((GetKeyState(VK_LBUTTON) & 0x100) != 0)
- if(_limitator_click == true){index_joc_G = 2; _limitator_click = false;
- _setare_zona_joc();
- ultimulCastigator = 0;
- }
- }else{
- setcolor(WHITE);
- settextstyle(stil_text, 0, 6);
- int TW = textwidth ("2 JUCATORI");
- int TH = textheight("2 JUCATORI");
- setbkcolor(BLACK);
- outtextxy((b2x1 + b2x2)/2 - TW/2, (b2y1 + b2y2)/2 - TH/2, "2 JUCATORI");
- setbkcolor(BLACK);
- }
- setcolor(WHITE);
- settextstyle(stil_text, 0, 5);
- int TW = textwidth (" Aspect modern");
- int TH = textheight(" Aspect modern");
- setbkcolor(BLACK);
- outtextxy((b2x1 + b2x2)/2 - TW/2, (b2y1 + b2y2)/2 - TH/2 + 112, " Aspect modern");
- setbkcolor(BLACK);
- rectangle(b2x1 + 0,b2y2 + 50 + 0, b2x1 + 50 - 0, b2y2 + 100 - 0);
- rectangle(b2x1 + 1,b2y2 + 50 + 1, b2x1 + 50 - 1, b2y2 + 100 - 1);
- rectangle(b2x1 + 2,b2y2 + 50 + 2, b2x1 + 50 - 2, b2y2 + 100 - 2);
- rectangle(b2x1 + 3,b2y2 + 50 + 3, b2x1 + 50 - 3, b2y2 + 100 - 3);
- rectangle(b2x1 + 4,b2y2 + 50 + 4, b2x1 + 50 - 4, b2y2 + 100 - 4);
- if( p.x >= b2x1 && p.x <= b2x1 + 50 && p.y >= b2y2 + 50 && p.y <= b2y2 + 100){
- if((GetKeyState(VK_LBUTTON) & 0x100) != 0){
- if(_limitator_click == true){
- if(masca == true) masca = false;
- else masca = true;
- _limitator_click = false;
- }
- }
- }
- if(masca == true ){
- setfillstyle(SOLID_FILL, 3);
- floodfill(b2x1 + 25, b2y2 + 75, WHITE);
- }
- }
- void _setare_zona_joc(){
- jucator_curent = 1;
- for(int i = 0; i <= 6; i++) {
- _zona_joc[0][i].jucator = 9;
- _zona_joc[6][i].jucator = 9;
- }
- for(int i = 0; i <= 6; i++) {
- _zona_joc[i][0].jucator = 9;
- _zona_joc[i][6].jucator = 9;
- }
- for(int i = 1; i <= 5; i++) for(int ii = 1; ii <= 5; ii++){
- _zona_joc[i][ii].x1 = _tabla.x1 + _tabla.marime / 5 * (ii-1) + 0;
- _zona_joc[i][ii].x2 = _tabla.x1 + _tabla.marime / 5 * ii - 0;
- _zona_joc[i][ii].y1 = _tabla.y1 + _tabla.marime / 5 * (i-1) +0;
- _zona_joc[i][ii].y2 = _tabla.y1 + _tabla.marime / 5 * i - 0;
- _zona_joc[i][ii].jucator = 2 - (i + ii) % 2;
- }
- _zona_joc[3][3].jucator = 0;
- _actualizare_culori();
- }
- void _actualizare_culori(){
- for(int i = 1; i <= 5; i++) for(int ii = 1; ii <= 5; ii++){
- if(_zona_joc[i][ii].jucator == 0) _zona_joc[i][ii].cod_culoare = getcolor();
- if(_zona_joc[i][ii].jucator == 1) _zona_joc[i][ii].cod_culoare = 1;
- if(_zona_joc[i][ii].jucator == 2) _zona_joc[i][ii].cod_culoare = 2;
- }
- }
- void _afisare_zona_joc(){
- setcolor(WHITE);
- rectangle(_tabla.x1, _tabla.y1, _tabla.x2, _tabla.y2);
- setfillstyle(SOLID_FILL, WHITE);
- floodfill(_tabla.centru_x, _tabla.centru_y, WHITE);
- for(int i = 1; i <= 5; i++) for(int ii = 1; ii <= 5; ii++){
- setcolor(_zona_joc[i][ii].cod_culoare);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, _zona_joc[i][ii].x2, _zona_joc[i][ii].y2);
- setfillstyle(SOLID_FILL, _zona_joc[i][ii].cod_culoare);
- floodfill((_zona_joc[i][ii].x1 + _zona_joc[i][ii].x2)/2, (_zona_joc[i][ii].y1 + _zona_joc[i][ii].y2)/2, _zona_joc[i][ii].cod_culoare);
- }
- if(masca == true)_masca_zona_joc();
- }
- void _comenzi_consolosa(){
- setbkcolor(BLACK);
- setcolor(WHITE);
- settextstyle(stil_text, 0, 8);
- int TW = textwidth ("1");
- int TH = textheight("1");
- outtextxy((_zona_joc[1][1].x1 + _zona_joc[1][1].x2)/2 - TW/2, (_zona_joc[1][1].y1 + _zona_joc[1][1].y2)/2 - TH/2 - 100 , "A");
- outtextxy((_zona_joc[1][2].x1 + _zona_joc[1][2].x2)/2 - TW/2, (_zona_joc[1][2].y1 + _zona_joc[1][2].y2)/2 - TH/2 - 100 , "B");
- outtextxy((_zona_joc[1][3].x1 + _zona_joc[1][3].x2)/2 - TW/2, (_zona_joc[1][3].y1 + _zona_joc[1][3].y2)/2 - TH/2 - 100 , "C");
- outtextxy((_zona_joc[1][4].x1 + _zona_joc[1][4].x2)/2 - TW/2, (_zona_joc[1][4].y1 + _zona_joc[1][4].y2)/2 - TH/2 - 100 , "D");
- outtextxy((_zona_joc[1][5].x1 + _zona_joc[1][5].x2)/2 - TW/2, (_zona_joc[1][5].y1 + _zona_joc[1][5].y2)/2 - TH/2 - 100 , "E");
- outtextxy((_zona_joc[1][1].x1 + _zona_joc[1][1].x2)/2 - TW/2 - 100, (_zona_joc[1][1].y1 + _zona_joc[1][1].y2)/2 - TH/2, "1");
- outtextxy((_zona_joc[2][1].x1 + _zona_joc[2][1].x2)/2 - TW/2 - 100, (_zona_joc[2][1].y1 + _zona_joc[2][1].y2)/2 - TH/2, "2");
- outtextxy((_zona_joc[3][1].x1 + _zona_joc[3][1].x2)/2 - TW/2 - 100, (_zona_joc[3][1].y1 + _zona_joc[3][1].y2)/2 - TH/2, "3");
- outtextxy((_zona_joc[4][1].x1 + _zona_joc[4][1].x2)/2 - TW/2 - 100, (_zona_joc[4][1].y1 + _zona_joc[4][1].y2)/2 - TH/2, "4");
- outtextxy((_zona_joc[5][1].x1 + _zona_joc[5][1].x2)/2 - TW/2 - 100, (_zona_joc[5][1].y1 + _zona_joc[5][1].y2)/2 - TH/2, "5");
- }
- void _masca_zona_joc(){
- setcolor(WHITE);
- rectangle(_tabla.x1 - 2, _tabla.y1 - 2, _tabla.x2 + 2, _tabla.y1 + 2);
- setfillstyle(SOLID_FILL, WHITE);
- floodfill(_tabla.x1,_tabla.y1,WHITE);
- setcolor(WHITE);
- rectangle(_tabla.x1 - 2, _tabla.y1 + 2, _tabla.x1 + 2, _tabla.y2 - 2);
- setfillstyle(SOLID_FILL, WHITE);
- floodfill(_tabla.x1,_tabla.y1 + 3,WHITE);
- setcolor(WHITE);
- rectangle(_tabla.x1 - 2, _tabla.y2 - 2, _tabla.x2 + 2, _tabla.y2 + 2);
- setfillstyle(SOLID_FILL, WHITE);
- floodfill(_tabla.x1,_tabla.y2,WHITE);
- setcolor(WHITE);
- rectangle(_tabla.x2 - 2, _tabla.y1 + 2, _tabla.x2 + 2, _tabla.y2 - 2);
- setfillstyle(SOLID_FILL, WHITE);
- floodfill(_tabla.x2,_tabla.y1 + 3,WHITE);
- for( int i = 2; i <= 5; i++){
- setcolor(WHITE);
- rectangle(_zona_joc[1][i].x1 - 2, _tabla.y1 + 2, _zona_joc[1][i].x1 + 2, _tabla.y2 -2);
- setfillstyle(SOLID_FILL, WHITE);
- floodfill(_zona_joc[1][i].x1,_tabla.y1 + 3,WHITE);
- }
- for( int i = 2; i <= 5; i++){
- setcolor(RED);
- rectangle(_tabla.x1 + 2, _zona_joc[i][1].y1 - 2, _tabla.x2 - 2, _zona_joc[i][1].y1 + 2);
- setfillstyle(SOLID_FILL, RED);
- floodfill(_tabla.x1 + 3,_zona_joc[i][1].y1,RED);
- }
- for( int i = 2; i <= 5; i++){
- setcolor(WHITE);
- rectangle(_tabla.x1 + 2, _zona_joc[i][1].y1 - 2, _tabla.x2 - 2, _zona_joc[i][1].y1 + 2);
- setfillstyle(SOLID_FILL, WHITE);
- floodfill(_tabla.x1 + 3,_zona_joc[i][1].y1,WHITE);
- }
- int rad = 8;
- for(int i = 1; i <= 5; i++) for(int ii = 1; ii <= 5; ii++){
- setcolor(BLACK);
- setfillstyle(SOLID_FILL, BLACK);
- circle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, rad);
- circle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y2, rad);
- circle(_zona_joc[i][ii].x2, _zona_joc[i][ii].y1, rad);
- circle(_zona_joc[i][ii].x2, _zona_joc[i][ii].y2, rad);
- floodfill(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, BLACK);
- floodfill(_zona_joc[i][ii].x1, _zona_joc[i][ii].y2, BLACK);
- floodfill(_zona_joc[i][ii].x2, _zona_joc[i][ii].y1, BLACK);
- floodfill(_zona_joc[i][ii].x2, _zona_joc[i][ii].y2, BLACK);
- setcolor(WHITE);
- setfillstyle(SOLID_FILL, WHITE);
- circle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, rad);
- circle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y2, rad);
- circle(_zona_joc[i][ii].x2, _zona_joc[i][ii].y1, rad);
- circle(_zona_joc[i][ii].x2, _zona_joc[i][ii].y2, rad);
- floodfill(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, WHITE);
- floodfill(_zona_joc[i][ii].x1, _zona_joc[i][ii].y2, WHITE);
- floodfill(_zona_joc[i][ii].x2, _zona_joc[i][ii].y1, WHITE);
- floodfill(_zona_joc[i][ii].x2, _zona_joc[i][ii].y2, WHITE);
- }
- setcolor(RED);
- rectangle(_tabla.x1 - 3, _tabla.y1 - 3, _tabla.x2 + 3, _tabla.y2 + 3);
- rectangle(_tabla.x1 - 25, _tabla.y1 - 25, _tabla.x2 + 25, _tabla.y2 + 25);
- setfillstyle(SOLID_FILL, RED);
- floodfill(_tabla.x1 - 10, _tabla.y1 - 10, RED);
- setcolor(BLACK);
- rectangle(_tabla.x1 - 3, _tabla.y1 - 3, _tabla.x2 + 3, _tabla.y2 + 3);
- rectangle(_tabla.x1 - 25, _tabla.y1 - 25, _tabla.x2 + 25, _tabla.y2 + 25);
- setfillstyle(SOLID_FILL, BLACK);
- floodfill(_tabla.x1 - 10, _tabla.y1 - 10, BLACK);
- }
- void _detectare_miscare(){
- for(int i = 1; i <= 5; i++) for(int ii = 1; ii <= 5; ii++)
- if( p.x >= _zona_joc[i][ii].x1 && p.x <= _zona_joc[i][ii].x2 &&
- p.y >= _zona_joc[i][ii].y1 && p.y <= _zona_joc[i][ii].y2 ){
- if((GetKeyState(VK_LBUTTON) & 0x100) != 0)
- if(_limitator_click == true){
- if(_zona_joc[i][ii].jucator == jucator_curent){
- if(_zona_joc[i][ii + 1].jucator == 0){
- _zona_joc[i][ii + 1].jucator = _zona_joc[i][ii].jucator;
- _zona_joc[i][ii].jucator = 0;
- _actualizare_culori();
- _tranzitie_glisare(i,ii,1);
- _detectare_castigator(i,ii);
- if(jucator_curent == 1) jucator_curent = 2;
- else jucator_curent = 1;
- }
- else if(_zona_joc[i][ii - 1].jucator == 0){
- _zona_joc[i][ii - 1].jucator = _zona_joc[i][ii].jucator;
- _zona_joc[i][ii].jucator = 0;
- _actualizare_culori();
- _tranzitie_glisare(i,ii,2);
- _detectare_castigator(i,ii);
- if(jucator_curent == 1) jucator_curent = 2;
- else jucator_curent = 1;
- }
- else if(_zona_joc[i + 1][ii].jucator == 0){
- _zona_joc[i + 1][ii].jucator = _zona_joc[i][ii].jucator;
- _zona_joc[i][ii].jucator = 0;
- _actualizare_culori();
- _tranzitie_glisare(i,ii,3);
- _detectare_castigator(i,ii);
- if(jucator_curent == 1) jucator_curent = 2;
- else jucator_curent = 1;
- }
- else if(_zona_joc[i - 1][ii].jucator == 0){
- _zona_joc[i - 1][ii].jucator = _zona_joc[i][ii].jucator;
- _zona_joc[i][ii].jucator = 0;
- _actualizare_culori();
- _tranzitie_glisare(i,ii,4);
- _detectare_castigator(i,ii);
- if(jucator_curent == 1) jucator_curent = 2;
- else jucator_curent = 1;
- }
- }
- _limitator_click = false;
- }
- }
- }
- void _tranzitie_glisare(int i, int ii, int t){
- for(int val = 1; val <= 101; val++){
- _buffer_dublu(true);
- {
- _margine(1,1);
- if(t == 1){
- setcolor(_zona_joc[i][ii + 1].cod_culoare);
- rectangle(_zona_joc[i][ii + 1].x1, _zona_joc[i][ii + 1].y1, _zona_joc[i][ii + 1].x1 + val, _zona_joc[i][ii + 1].y2);
- rectangle(_zona_joc[i][ii + 1].x1, _zona_joc[i][ii + 1].y1, _zona_joc[i][ii + 1].x1 + val - 1, _zona_joc[i][ii + 1].y2);
- rectangle(_zona_joc[i][ii + 1].x1, _zona_joc[i][ii + 1].y1, _zona_joc[i][ii + 1].x1 + val - 2, _zona_joc[i][ii + 1].y2);
- setcolor(WHITE);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, _zona_joc[i][ii].x1 + val, _zona_joc[i][ii].y2);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, _zona_joc[i][ii].x1 + val - 1, _zona_joc[i][ii].y2);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, _zona_joc[i][ii].x1 + val - 2, _zona_joc[i][ii].y2);
- }
- if(t == 2){
- setcolor(_zona_joc[i][ii - 1].cod_culoare);
- rectangle(_zona_joc[i][ii - 1].x2 - val, _zona_joc[i][ii - 1].y1, _zona_joc[i][ii + 1].x2 , _zona_joc[i][ii - 1].y2);
- rectangle(_zona_joc[i][ii - 1].x2 - val + 1, _zona_joc[i][ii - 1].y1, _zona_joc[i][ii + 1].x2 , _zona_joc[i][ii - 1].y2);
- rectangle(_zona_joc[i][ii - 1].x2 - val + 2, _zona_joc[i][ii - 1].y1, _zona_joc[i][ii + 1].x2 , _zona_joc[i][ii - 1].y2);
- setcolor(WHITE);
- rectangle(_zona_joc[i][ii].x2 - val, _zona_joc[i][ii - 1].y1, _zona_joc[i][ii].x2 , _zona_joc[i][ii - 1].y2);
- rectangle(_zona_joc[i][ii].x2 - val + 1, _zona_joc[i][ii - 1].y1, _zona_joc[i][ii].x2 , _zona_joc[i][ii - 1].y2);
- rectangle(_zona_joc[i][ii].x2 - val + 2, _zona_joc[i][ii - 1].y1, _zona_joc[i][ii].x2 , _zona_joc[i][ii - 1].y2);
- }
- if(t == 3){
- setcolor(_zona_joc[i + 1][ii].cod_culoare);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i + 1][ii].y1, _zona_joc[i][ii].x2 , _zona_joc[i + 1][ii].y1 + val);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i + 1][ii].y1, _zona_joc[i][ii].x2 , _zona_joc[i + 1][ii].y1 + val - 1);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i + 1][ii].y1, _zona_joc[i][ii].x2 , _zona_joc[i + 1][ii].y1 + val - 2);
- setcolor(WHITE);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, _zona_joc[i][ii].x2 , _zona_joc[i][ii].y1 + val);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, _zona_joc[i][ii].x2 , _zona_joc[i][ii].y1 + val - 1);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y1, _zona_joc[i][ii].x2 , _zona_joc[i][ii].y1 + val - 2);
- }
- if(t == 4){
- setcolor(_zona_joc[i - 1][ii].cod_culoare);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i - 1][ii].y2 - val, _zona_joc[i][ii].x2 , _zona_joc[i - 1][ii].y2);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i - 1][ii].y2 - val + 1, _zona_joc[i][ii].x2 , _zona_joc[i - 1][ii].y2);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i - 1][ii].y2 - val + 2, _zona_joc[i][ii].x2 , _zona_joc[i - 1][ii].y2);
- setcolor(WHITE);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y2 - val, _zona_joc[i][ii].x2 , _zona_joc[i][ii].y2);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y2 - val + 1, _zona_joc[i][ii].x2 , _zona_joc[i][ii].y2);
- rectangle(_zona_joc[i][ii].x1, _zona_joc[i][ii].y2 - val + 2, _zona_joc[i][ii].x2 , _zona_joc[i][ii].y2);
- }
- _margine_dubla(1,1);
- delay(0);
- }
- _resetare_buffer();
- }
- }
- void _detectare_castigator(int i, int ii){
- if(index_joc_G == 1)for(int i = 1; i <= 5; i++) for(int ii = 1; ii <= 5; ii++) if(_zona_joc[i][ii].jucator == 2)_zona_joc[i][ii].jucator = 3;
- int vecini[4]={ _zona_joc[i][ii+1].jucator ,
- _zona_joc[i][ii-1].jucator ,
- _zona_joc[i+1][ii].jucator ,
- _zona_joc[i-1][ii].jucator };
- int inlocuitor=3;
- for(int v=0; v<=3; v++) if(vecini[v] != 9){
- inlocuitor = vecini[v];
- break;
- }
- for(int v=0; v<=3; v++) if( vecini[v]==9 ) vecini[v] = inlocuitor;
- if(vecini[0] == vecini[1] &&
- vecini[0] == vecini[2] &&
- vecini[0] == vecini[3] ){
- ultimulCastigator = vecini[0];
- index_joc_G = 0;
- }
- }
- void _meniu_jocG(){
- setcolor(WHITE);
- settextstyle(stil_text, 0, 17);
- int TW = textwidth ("Patratele glisante");
- int TH = textheight("Patratele glisante");
- //setbkcolor(BLACK);
- outtextxy(_latime_ecran/4*3 - TW/2, 125 , "Patratele glisante");
- }
- void _afisare_player_curent(int TIP){
- setcolor(WHITE);
- settextstyle(stil_text, 0, 5);
- if(TIP == 1){
- //setbkcolor(BLACK);
- outtextxy(_latime_ecran/2 + 10, 165 , "Jucatorul1 Jucatorul2");
- }else{
- //setbkcolor(BLACK);
- outtextxy(_latime_ecran/2 + 10, 165 , "Jucatorul1 Calculator");
- }
- if(jucator_curent == 1){
- line(_latime_ecran/2 + 10, 200, _latime_ecran/2 + 270, 200);
- line(_latime_ecran/2 + 10, 201, _latime_ecran/2 + 270, 201);
- line(_latime_ecran/2 + 10, 202, _latime_ecran/2 + 270, 202);
- }else{
- line(_latime_ecran/2 + 375, 200, _latime_ecran/2 + 635, 200);
- line(_latime_ecran/2 + 375, 201, _latime_ecran/2 + 635, 201);
- line(_latime_ecran/2 + 375, 202, _latime_ecran/2 + 635, 202);
- }
- }
- void _afisare_ultmul_castigator(){
- settextstyle(stil_text, 0, 5);
- if(ultimulCastigator == 1){
- setcolor(BLUE);
- outtextxy(_latime_ecran/2 + 10, 640 , "Jucatorul 1 a castigat!");
- }
- if(ultimulCastigator == 2){
- setcolor(GREEN);
- outtextxy(_latime_ecran/2 + 10, 640 , "Jucatorul 2 a castigat!");
- }
- if(ultimulCastigator == 3){
- setcolor(RED);
- outtextxy(_latime_ecran/2 + 10, 640 , "Calculatorul a castigat!");
- }
- }
- void _set_AI_zone(){
- for(int i = 1; i <= 5; i++) for(int ii = 1; ii <= 5; ii++) if(_zona_joc[i][ii].jucator == 2)
- _zona_joc[i][ii].jucator = 3;
- }
- void _AI(){
- if(jucator_curent == 2 && ultimulCastigator == 0){
- int i = 1;
- int ii = 1;
- for(int j = 1; j <= 5; j++) for(int jj = 1; jj <= 5; jj++) if(_zona_joc[j][jj].jucator == 0){i = j; ii = jj;}
- delay(100);
- repeat:
- int tip = rand() % 4 + 1;
- if(tip == 1){
- if(_zona_joc[i - 1][ii].jucator == 3){
- _zona_joc[i][ii].jucator = 2;
- _zona_joc[i - 1][ii].jucator = 0;
- _actualizare_culori();
- _tranzitie_glisare(i - 1,ii,3);
- _detectare_castigator(i - 1,ii);
- if(jucator_curent == 1) jucator_curent = 2;
- else jucator_curent = 1;
- }else goto repeat;
- }
- if(tip == 2){
- if(_zona_joc[i + 1][ii].jucator == 3){
- _zona_joc[i][ii].jucator = 2;
- _zona_joc[i + 1][ii].jucator = 0;
- _actualizare_culori();
- _tranzitie_glisare(i + 1,ii,4);
- _detectare_castigator(i + 1,ii);
- if(jucator_curent == 1) jucator_curent = 2;
- else jucator_curent = 1;
- }else goto repeat;
- }
- if(tip == 3){
- if(_zona_joc[i][ii - 1].jucator == 3){
- _zona_joc[i][ii].jucator = 2;
- _zona_joc[i][ii - 1].jucator = 0;
- _actualizare_culori();
- _tranzitie_glisare(i,ii - 1,1);
- _detectare_castigator(i,ii - 1);
- if(jucator_curent == 1) jucator_curent = 2;
- else jucator_curent = 1;
- }else goto repeat;
- }
- if(tip == 4){
- if(_zona_joc[i][ii + 1].jucator == 3){
- _zona_joc[i][ii].jucator = 2;
- _zona_joc[i][ii + 1].jucator = 0;
- _actualizare_culori();
- _tranzitie_glisare(i,ii + 1,2);
- _detectare_castigator(i,ii + 1);
- if(jucator_curent == 1) jucator_curent = 2;
- else jucator_curent = 1;
- }else goto repeat;
- }
- }
- }
- void _consola(){
- if(GetKeyState('C') & 0x8000) if(consola == false) consola = true;
- if(GetKeyState(VK_ESCAPE) & 0x8000) if(consola == true) consola = false;
- if(consola == true){
- setcolor(WHITE);
- settextstyle(stil_text, 0, 3);
- outtextxy(_latime_ecran/2 + 20, 320 , "Folositi forma: A1->B1");
- setcolor(_meniu[1][1].cod_culoare);
- rectangle(_latime_ecran/2 + 20, 340, _latime_ecran - 60, 600);
- rectangle(_latime_ecran/2 + 19, 340, _latime_ecran - 59, 600);
- rectangle(_latime_ecran/2 + 18, 340 - 1, _latime_ecran - 58, 600 + 1);
- rectangle(_latime_ecran/2 + 17, 340 - 1, _latime_ecran - 57, 600 + 1);
- line(_latime_ecran/2 + 20, 570, _latime_ecran - 60, 570);
- {
- }
- }else{
- setcolor(WHITE);
- settextstyle(stil_text, 0, 3);
- //setbkcolor(BLACK);
- outtextxy(_latime_ecran/2 + 20, 450 , " Apasati C pentru consola.");
- }
- }
- /// CEAS
- void ceas(int i, int ii){
- time_t timpBrut;
- struct tm * TimpCurent;
- char a[100];
- int coordonateOraX[12] = {_meniu[i][ii].centru_x + 48 - 25,
- _meniu[i][ii].centru_x + 78 - 40,
- _meniu[i][ii].centru_x + 78 - 40,
- _meniu[i][ii].centru_x + 85 - 40,
- _meniu[i][ii].centru_x + 44 - 20,
- _meniu[i][ii].centru_x - 10 + 10,
- _meniu[i][ii].centru_x - 64 + 40,
- _meniu[i][ii].centru_x - 92 + 55,
- _meniu[i][ii].centru_x -105 + 60,
- _meniu[i][ii].centru_x - 92 + 60,
- _meniu[i][ii].centru_x - 68 + 40,
- _meniu[i][ii].centru_x - 0 - 0};
- int coordonateOraY[12] = {_meniu[i][ii].centru_y - 85 + 55,
- _meniu[i][ii].centru_y - 55 + 35,
- _meniu[i][ii].centru_y ,
- _meniu[i][ii].centru_y - 14 + 40,
- _meniu[i][ii].centru_y + 66 - 30,
- _meniu[i][ii].centru_y + 85 - 40,
- _meniu[i][ii].centru_y + 66 - 30,
- _meniu[i][ii].centru_y + 32 - 10,
- _meniu[i][ii].centru_y - 14 + 14,
- _meniu[i][ii].centru_y - 52 + 30,
- _meniu[i][ii].centru_y - 82 + 40,
- _meniu[i][ii].centru_y -105 + 65 };
- int r = _meniu[i][ii].centru_y - _meniu[i][ii].y1 - 13;
- int z = r / 7;
- int coordonateMinSecX[61] ={ z * 0, z * 1, z * 2, z * 3, z * 4, z * 5, z * 6, z * 7, z * 7, z * 7, z * 7, z * 7, z * 7, z * 7, z * 7,
- z * 7, z * 7, z * 7, z * 7, z * 7, z * 7, z * 7, z * 7, z * 6, z * 5, z * 4, z * 3, z * 2, z * 1, z * 0,
- -z * 0, -z * 1, -z * 2, -z * 3, -z * 4, -z * 5, -z * 6, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7,
- -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 6, -z * 5, -z * 4, -z * 3, -z * 2, -z * 1, -z * 0
- };
- int coordonateMinSecY[61] ={ -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 6, -z * 5, -z * 4, -z * 3, -z * 2, -z * 1, -z * 0,
- z * 0, z * 1, z * 2, z * 3, z * 4, z * 5, z * 6, z * 7, z * 7, z * 7, z * 7, z * 7, z * 7, z * 7, z * 7,
- z * 7, z * 7, z * 7, z * 7, z * 7, z * 7, z * 7, z * 7, z * 6, z * 5, z * 4, z * 3, z * 2, z * 1, z * 0,
- -z * 0, -z * 1, -z * 2, -z * 3, -z * 4, -z * 5, -z * 6, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7, -z * 7
- };
- int OMS;
- timpBrut = time(NULL);
- TimpCurent = localtime(&timpBrut);
- setcolor(WHITE);
- circle(_meniu[i][ii].centru_x, _meniu[i][ii].centru_y, (_meniu[i][ii].centru_y - _meniu[i][ii].y1) - 13);
- circle(_meniu[i][ii].centru_x, _meniu[i][ii].centru_y, (_meniu[i][ii].centru_y - _meniu[i][ii].y1) - 14);
- circle(_meniu[i][ii].centru_x, _meniu[i][ii].centru_y, (_meniu[i][ii].centru_y - _meniu[i][ii].y1) - 15);
- setbkcolor(_meniu[i][ii].cod_culoare);
- settextstyle(stil_text, 0, 3);
- outtextxy(_meniu[i][ii].centru_x + 85 , _meniu[i][ii].centru_y - 14, "3");
- outtextxy(_meniu[i][ii].centru_x + 78 , _meniu[i][ii].centru_y + 32, "4");
- outtextxy(_meniu[i][ii].centru_x + 44 , _meniu[i][ii].centru_y + 66, "5");
- outtextxy(_meniu[i][ii].centru_x - 10 , _meniu[i][ii].centru_y + 85, "6");
- outtextxy(_meniu[i][ii].centru_x - 64 , _meniu[i][ii].centru_y + 66, "7");
- outtextxy(_meniu[i][ii].centru_x - 92 , _meniu[i][ii].centru_y + 32, "8");
- outtextxy(_meniu[i][ii].centru_x - 105 , _meniu[i][ii].centru_y - 14, "9");
- outtextxy(_meniu[i][ii].centru_x - 92 , _meniu[i][ii].centru_y - 52, "10");
- outtextxy(_meniu[i][ii].centru_x - 68 , _meniu[i][ii].centru_y - 82, "11");
- outtextxy(_meniu[i][ii].centru_x - 15 , _meniu[i][ii].centru_y - 105, "12");
- outtextxy(_meniu[i][ii].centru_x + 48 , _meniu[i][ii].centru_y - 85, "1");
- outtextxy(_meniu[i][ii].centru_x + 78 , _meniu[i][ii].centru_y - 55, "2");
- setbkcolor(BLACK);
- strftime(a, 100, "%I", TimpCurent);
- sscanf(a, "%d", &OMS);
- setcolor(WHITE);
- line(_meniu[i][ii].centru_x, _meniu[i][ii].centru_y, coordonateOraX[OMS -1], coordonateOraY[OMS -1]);
- strftime(a, 100, "%M", TimpCurent);
- sscanf(a, "%d", &OMS);
- setcolor(GREEN);
- line(_meniu[i][ii].centru_x, _meniu[i][ii].centru_y, _meniu[i][ii].centru_x + coordonateMinSecX[OMS], _meniu[i][i].centru_y + coordonateMinSecY[OMS]);
- strftime(a, 100, "%S", TimpCurent);
- sscanf(a, "%d", &OMS);
- setcolor(YELLOW);
- line(_meniu[i][ii].centru_x, _meniu[i][ii].centru_y, _meniu[i][ii].centru_x + coordonateMinSecX[OMS], _meniu[i][i].centru_y + coordonateMinSecY[OMS]);
- setcolor(WHITE);
- circle(_meniu[i][ii].centru_x, _meniu[i][ii].centru_y, (_meniu[i][ii].centru_y - _meniu[i][ii].y1) - 13);
- rectangle(_meniu[i][ii].x1 + 10, _meniu[i][ii].y1 + 10, _meniu[i][ii].x2 - 10, _meniu[i][ii].y2 - 10);
- setfillstyle(SOLID_FILL, _meniu[i][ii].cod_culoare);
- floodfill(_meniu[i][ii].x1 + 11, _meniu[i][ii].y1 + 11, WHITE);
- floodfill(_meniu[i][ii].x1 + 10, _meniu[i][ii].y1 + 10, _meniu[i][ii].cod_culoare);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement