Advertisement
tomur

Saper przeniesiony V0.0

Jan 28th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.88 KB | None | 0 0
  1. //1. Zrobia czyst¹ plansze
  2. //2. Zrobia losowanie min w zale¿noœci od ich liczby
  3. //3. Zrobia wybór
  4. //4. Zrobia sprawdzenie ile min jest w okolicy i wypisaa numer
  5. //5. Zrobia sprawdzenie czy mina
  6. //6. Zrobia sprawdzenie zwyciestwa
  7. #include <iostream>
  8. #include <cstdlib>
  9. #include <cstdio>
  10. #include <ctime>
  11. #include <sstream>
  12. using namespace std;
  13. void sprawdz(string plansza[][10], string udawanaPlansza[][10],int minitab[],int death[]){
  14. int miny=0;
  15.     int minyWPoblizu=0;
  16.     int j,k;
  17.     do{
  18.     cout<<"j: "<<minitab[0]<<" k: "<<minitab[1]<<endl;
  19.     j=minitab[0];
  20.     k=minitab[1];
  21.     if(plansza[minitab[0]][minitab[1]]=="M"){
  22.     cout<<"Slepa mina Koniec gry"<<endl;
  23.     death[0]=1;
  24.     exit(0);
  25.     }
  26.     if(j==0 && k==0){ //j jest pionem a k jest poziomem
  27.     cout<<"bylem tutaj lewy gorny rog"<<endl;
  28.     minyWPoblizu=0;
  29.         if(plansza[j][k+1]=="M"){
  30.             minyWPoblizu++;
  31.         }
  32.         if(plansza[j+1][k+1]=="M"){
  33.             minyWPoblizu++;
  34.         }
  35.         if(plansza[j+1][k]=="M"){
  36.             minyWPoblizu++;
  37.         }
  38.         if(minyWPoblizu==0){
  39.             udawanaPlansza[j][k]=minyWPoblizu;
  40.             int rekurencja[2];
  41.             rekurencja[0]=minitab[0];
  42.             rekurencja[1]=minitab[1]+1;
  43.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  44.  
  45.             rekurencja[0]=minitab[0]+1;
  46.             rekurencja[1]=minitab[1]+1;
  47.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  48.  
  49.             rekurencja[0]=minitab[0]+1;
  50.             rekurencja[1]=minitab[1];
  51.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  52.  
  53.         }else{
  54.         ostringstream ss;
  55.         ss << minyWPoblizu;
  56.         udawanaPlansza[j][k]=ss.str();
  57.         }
  58.  
  59.     }
  60.     if(j!=0 && j!=9 && k==0){ //j jest pionem a k jest poziomem
  61.     cout<<"bylem tutaj gora"<<endl;
  62.     minyWPoblizu=0;
  63.         if(plansza[j][k+1]=="M"){
  64.             minyWPoblizu++;
  65.         }
  66.         if(plansza[j+1][k+1]=="M"){
  67.             minyWPoblizu++;
  68.         }
  69.         if(plansza[j+1][k]=="M"){
  70.             minyWPoblizu++;
  71.         }
  72.         if(plansza[j-1][k]=="M"){
  73.             minyWPoblizu++;
  74.         }
  75.         if(plansza[j-1][k-1]=="M"){
  76.             minyWPoblizu++;
  77.         }
  78.         if(minyWPoblizu==0){
  79.             udawanaPlansza[j][k]=minyWPoblizu;
  80.             int rekurencja[2];
  81.             rekurencja[0]=minitab[0];
  82.             rekurencja[1]=minitab[1]+1;
  83.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  84.  
  85.             rekurencja[0]=minitab[0]+1;
  86.             rekurencja[1]=minitab[1]+1;
  87.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  88.  
  89.             rekurencja[0]=minitab[0]+1;
  90.             rekurencja[1]=minitab[1];
  91.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  92.  
  93.             rekurencja[0]=minitab[0]-11;
  94.             rekurencja[1]=minitab[1];
  95.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  96.  
  97.             rekurencja[0]=minitab[0]-1;
  98.             rekurencja[1]=minitab[1]-1;
  99.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  100.  
  101.         }else{
  102.         ostringstream ss;
  103.         ss << minyWPoblizu;
  104.         udawanaPlansza[j][k]=ss.str();
  105.         }
  106.  
  107.     }
  108.     if(j==9 && k==0){ //j jest pionem a k jest poziomem
  109.     cout<<"bylem tutaj Prawy Gorny rog"<<endl;
  110.     minyWPoblizu=0;
  111.         if(plansza[j][k+1]=="M"){
  112.             minyWPoblizu++;
  113.         }
  114.         if(plansza[j-1][k]=="M"){
  115.             minyWPoblizu++;
  116.         }
  117.         if(plansza[j-1][k+1]=="M"){
  118.             minyWPoblizu++;
  119.         }
  120.         if(minyWPoblizu==0){
  121.             udawanaPlansza[j][k]=minyWPoblizu;
  122.             int rekurencja[2];
  123.             rekurencja[0]=minitab[0];
  124.             rekurencja[1]=minitab[1]+1;
  125.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  126.  
  127.             rekurencja[0]=minitab[0]-1;
  128.             rekurencja[1]=minitab[1];
  129.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  130.  
  131.             rekurencja[0]=minitab[0]-1;
  132.             rekurencja[1]=minitab[1]+1;
  133.             sprawdz(plansza,udawanaPlansza,rekurencja,death);
  134.  
  135.  
  136.         }else{
  137.         ostringstream ss;
  138.         ss << minyWPoblizu;
  139.         udawanaPlansza[j][k]=ss.str();
  140.         }
  141.  
  142.     }
  143.  
  144.         if(j==9 && k!=0 && k!=9){ //j jest pionem a k jest poziomem
  145.     cout<<"bylem tutaj Prawa"<<endl;
  146.     minyWPoblizu=0;
  147.         if(plansza[j][k+1]=="M"){
  148.             minyWPoblizu++;
  149.         }
  150.         if(plansza[j-1][k]=="M"){
  151.             minyWPoblizu++;
  152.         }
  153.         if(plansza[j-1][k+1]=="M"){
  154.             minyWPoblizu++;
  155.         }
  156.         if(plansza[j-1][k-1]=="M"){
  157.             minyWPoblizu++;
  158.         }
  159.         if(plansza[j][k-1]=="M"){
  160.             minyWPoblizu++;
  161.         }
  162.         if(minyWPoblizu==0){
  163.             udawanaPlansza[j][k]=minyWPoblizu;
  164.  
  165.         }else{
  166.         ostringstream ss;
  167.         ss << minyWPoblizu;
  168.         udawanaPlansza[j][k]=ss.str();
  169.         }
  170.  
  171.         }
  172. if(j==9 && k==9){ //j jest pionem a k jest poziomem
  173.     cout<<"bylem tutaj Prawy dolny rog"<<endl;
  174.     minyWPoblizu=0;
  175.         if(plansza[j-1][k]=="M"){
  176.             minyWPoblizu++;
  177.         }
  178.         if(plansza[j-1][k-1]=="M"){
  179.             minyWPoblizu++;
  180.         }
  181.         if(plansza[j][k-1]=="M"){
  182.             minyWPoblizu++;
  183.         }
  184.         if(minyWPoblizu==0){
  185.             udawanaPlansza[j][k]=minyWPoblizu;
  186.  
  187.         }else{
  188.         ostringstream ss;
  189.         ss << minyWPoblizu;
  190.         udawanaPlansza[j][k]=ss.str();
  191.         }
  192.  
  193.         }
  194.         if(j!=9 && j!=0 && k==9){ //j jest pionem a k jest poziomem
  195.     cout<<"bylem tutaj dol"<<endl;
  196.     minyWPoblizu=0;
  197.         if(plansza[j-1][k]=="M"){
  198.             minyWPoblizu++;
  199.         }
  200.         if(plansza[j-1][k-1]=="M"){
  201.             minyWPoblizu++;
  202.         }
  203.         if(plansza[j][k-1]=="M"){
  204.             minyWPoblizu++;
  205.         }
  206.         if(plansza[j+1][k-1]=="M"){
  207.             minyWPoblizu++;
  208.         }
  209.         if(plansza[j+1][k]=="M"){
  210.             minyWPoblizu++;
  211.         }
  212.         if(minyWPoblizu==0){
  213.             udawanaPlansza[j][k]=minyWPoblizu;
  214.  
  215.         }else{
  216.         ostringstream ss;
  217.         ss << minyWPoblizu;
  218.         udawanaPlansza[j][k]=ss.str();
  219.         }
  220.  
  221.         }
  222.         if(j==0 && k==9){ //j jest pionem a k jest poziomem
  223.     cout<<"bylem tutaj lewy dolny rog"<<endl;
  224.     minyWPoblizu=0;
  225.         if(plansza[j][k-1]=="M"){
  226.             minyWPoblizu++;
  227.         }
  228.         if(plansza[j+1][k-1]=="M"){
  229.             minyWPoblizu++;
  230.         }
  231.         if(plansza[j+1][k]=="M"){
  232.             minyWPoblizu++;
  233.         }
  234.         if(minyWPoblizu==0){
  235.             udawanaPlansza[j][k]=minyWPoblizu;
  236.  
  237.         }else{
  238.         ostringstream ss;
  239.         ss << minyWPoblizu;
  240.         udawanaPlansza[j][k]=ss.str();
  241.         }
  242.  
  243.         }
  244.         if(j==0 && k!=0 &&k!=9){ //j jest pionem a k jest poziomem
  245.     cout<<"bylem tutaj lewa"<<endl;
  246.     minyWPoblizu=0;
  247.         if(plansza[j][k+1]=="M"){
  248.             minyWPoblizu++;
  249.         }
  250.         if(plansza[j][k-1]=="M"){
  251.             minyWPoblizu++;
  252.         }
  253.         if(plansza[j+1][k-1]=="M"){
  254.             minyWPoblizu++;
  255.         }
  256.         if(plansza[j+1][k+1]=="M"){
  257.             minyWPoblizu++;
  258.         }
  259.         if(plansza[j+1][k]=="M"){
  260.             minyWPoblizu++;
  261.         }
  262.         if(minyWPoblizu==0){
  263.             udawanaPlansza[j][k]=minyWPoblizu;
  264.  
  265.         }else{
  266.         ostringstream ss;
  267.         ss << minyWPoblizu;
  268.         udawanaPlansza[j][k]=ss.str();
  269.         }
  270.         }
  271.         if(j!=0 && j!=9 && k!=0 && k!=9){ //j jest pionem a k jest poziomem
  272.     cout<<"bylem tutaj srodek"<<endl;
  273.     minyWPoblizu=0;
  274.         if(plansza[j][k+1]=="M"){
  275.             minyWPoblizu++;
  276.         }
  277.         if(plansza[j][k-1]=="M"){
  278.             minyWPoblizu++;
  279.         }
  280.         if(plansza[j+1][k-1]=="M"){
  281.             minyWPoblizu++;
  282.         }
  283.         if(plansza[j+1][k+1]=="M"){
  284.             minyWPoblizu++;
  285.         }
  286.         if(plansza[j-1][k+1]=="M"){
  287.             minyWPoblizu++;
  288.         }
  289.         if(plansza[j-1][k-1]=="M"){
  290.             minyWPoblizu++;
  291.         }
  292.         if(plansza[j-1][k]=="M"){
  293.             minyWPoblizu++;
  294.         }
  295.         if(plansza[j+1][k]=="M"){
  296.             minyWPoblizu++;
  297.         }
  298.         if(minyWPoblizu==0){
  299.             udawanaPlansza[j][k]=minyWPoblizu;
  300.  
  301.         }else{
  302.         ostringstream ss;
  303.         ss << minyWPoblizu;
  304.         udawanaPlansza[j][k]=ss.str();
  305.         }
  306.  
  307.         }
  308.         }while(miny>0);
  309.  
  310. }
  311. void wyczyscPlansze(string plansza[][10])
  312. {
  313.  
  314.  
  315.  int k=0,j=0;
  316.  for (int j=0;true;j++){
  317.  
  318.     plansza[j][k]="0";
  319.     cout<<plansza[j][k];
  320.  
  321.     if(j==9)
  322.         {
  323.             if(j==9 && k==9){
  324.         break;
  325.     }
  326.         k++;
  327.         j=-1;
  328.         cout<<"k++"<<endl;
  329.         }
  330.  
  331.  }
  332. }
  333. void wylosujMiny(string plansza[][10], int miny)
  334. {
  335.      int j=0,k=0,l=0;
  336.      for(int z=0;z<miny;){
  337.     j=( rand() % 10 ) + 0;
  338.     k=( rand() % 10 ) + 0;
  339.     cout<<"j: "<<j<<" k: "<<k<<endl;
  340.     if(plansza[j][k]=="M"){
  341.          cout<<"powtórzenie"<<endl;
  342.          }
  343.          else{
  344.              plansza[j][k]="M";
  345.              z++;
  346.       }
  347.       cout<<endl;
  348. }
  349. for (int j=0;true;j++){
  350.  
  351.     cout<<plansza[j][l];
  352.  
  353.     if(j==9)
  354.         {
  355.             if(j==9 && l==9){
  356.         break;
  357.     }
  358.         l++;
  359.         j=-1;
  360.         cout<<endl;
  361.         }
  362.  
  363.  }
  364.  cout<<endl<<endl;
  365. }
  366. void wyczyscUdawanaPlansze(string plansza[][10])
  367. {
  368.  
  369.  
  370.  int k=0,j=0;
  371.  for (int j=0;true;j++){
  372.  
  373.     plansza[j][k]="?";
  374.     cout<<plansza[j][k];
  375.  
  376.     if(j==9)
  377.         {
  378.             if(j==9 && k==9){
  379.         break;
  380.     }
  381.         k++;
  382.         j=-1;
  383.         cout<<"k++"<<endl;
  384.         }
  385.  
  386.  }
  387.  cout<<endl;
  388. }
  389. void narysujPole(string plansza[][10]){
  390.     int k=0,j=0;
  391.  for (int j=0;true;j++){
  392.  
  393.     cout<<plansza[j][k];
  394.  
  395.     if(j==9)
  396.         {
  397.             if(j==9 && k==9){
  398.         break;
  399.     }
  400.         k++;
  401.         j=-1;
  402.         cout<<"k++"<<endl;
  403.         }
  404.  
  405.  }
  406.  cout<<endl;
  407. }
  408. void wybor(int minitab[]){
  409.        int j,k;
  410.        cout<<endl<<"Prosze wybierz wspolrzendne do sprawdzenia"<<endl;
  411.        do{
  412.        cin.clear();
  413.        cin.sync();
  414.        cin>>j>>k;
  415.        if(j<0 || j>9 || k<0 || k>9 || (cin.good()==false)){
  416.               cout<<"Zakres liczb wynosi 1-9. Popraw sie"<<endl;
  417.                  }else{
  418.        minitab[0]=j;
  419.        minitab[1]=k;
  420.        }
  421.        }while(j<0 || j>9 || k<0 || k>9 || (cin.good()==false));
  422.        }
  423.  
  424.  
  425.  
  426. int main()
  427. {
  428.     srand( time( NULL ) );
  429.     int miny=0;
  430.     int minyWPoblizu=0;
  431.     int j,k;
  432.     int death[1];
  433.     death[0]=0;
  434.     cout<<"Witaj w saperze 10x10"<<endl;
  435.     cout<<"Ile chcesz min? :"<<endl;
  436.     cin>>miny;
  437.     while (miny > 99){
  438.  
  439.              cout<<"pls no more than 99"<<endl<<"Try again"<<endl;
  440.              cin>>miny;
  441.  
  442.         }
  443.     string plansza[10][10];
  444.     string udawanaPlansza[10][10];
  445.     wyczyscPlansze(plansza);
  446.     wylosujMiny(plansza,miny);
  447.     wyczyscUdawanaPlansze(udawanaPlansza);
  448.     int minitab[2];
  449.     narysujPole(udawanaPlansza);
  450.     do{
  451.     wybor(minitab);
  452.     sprawdz(plansza, udawanaPlansza,minitab,death );
  453.     narysujPole(udawanaPlansza);
  454.     }while(death[0]!=1);
  455.     return 0;
  456. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement