Advertisement
Guest User

Untitled

a guest
May 25th, 2015
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3.  
  4. using namespace std;
  5.  
  6. class Scianka{
  7. private:
  8.     char *Tab;
  9.     const char KolorSrodka;
  10. public:
  11.     Scianka(char kolor);
  12.     ~Scianka();
  13.     void ObrotC();
  14.     void ObrotCA();
  15.     void Wypisz();
  16.     void Wypisz(int i);
  17.     void Set(int i,char k);
  18.     char Get(int i);
  19.     friend void Obrot(Scianka &A,int a1,int a2,int a3,Scianka &B,int b1,int b2,int b3,Scianka &C,int c1,int c2,int c3,Scianka &D,int d1,int d2,int d3);
  20. };
  21.  
  22. Scianka::Scianka(char kolor):KolorSrodka(kolor){
  23.     Tab=new char[8];
  24.     for (int i=0;i<8;i++){
  25.         Tab[i]=kolor;
  26.     }
  27. }
  28.  
  29. Scianka::~Scianka(){
  30.     delete []Tab;}
  31.  
  32. void Scianka::ObrotC(){
  33.     char pomoc1,pomoc2;
  34.     pomoc1=Tab[0];Tab[0]=Tab[6];Tab[6]=Tab[4];Tab[4]=Tab[2];Tab[2]=pomoc1;
  35.     pomoc2=Tab[1];Tab[1]=Tab[7];Tab[7]=Tab[5];Tab[5]=Tab[3];Tab[3]=pomoc2;
  36. }
  37.  
  38. void Scianka::ObrotCA(){
  39.     char pomoc1,pomoc2;
  40.     pomoc1=Tab[0];Tab[0]=Tab[2];Tab[2]=Tab[4];Tab[4]=Tab[6];Tab[6]=pomoc1;
  41.     pomoc2=Tab[1];Tab[1]=Tab[3];Tab[3]=Tab[5];Tab[5]=Tab[7];Tab[7]=pomoc2;
  42. }
  43.  
  44. void Scianka::Wypisz(){
  45.     printf("%c %c %c\n",Tab[0],Tab[1],Tab[2]);
  46.     printf("%c %c %c\n",Tab[7],KolorSrodka,Tab[3]);
  47.     printf("%c %c %c\n\n",Tab[6],Tab[5],Tab[4]);
  48. }
  49.  
  50. void Scianka::Wypisz(int i){
  51.     if (i==1){printf("%c%c%c ",Tab[0],Tab[1],Tab[2]);}
  52.     else if (i==2){printf("%c%c%c ",Tab[7],KolorSrodka,Tab[3]);}
  53.     else if (i==3){printf("%c%c%c ",Tab[6],Tab[5],Tab[4]);}
  54.     else{printf("Podaj bledne i\n");}
  55. }
  56.  
  57. void Scianka::Set(int i,char k){
  58.     Tab[i]=k;
  59. }
  60.  
  61. char Scianka::Get(int i){
  62.   return Tab[i];}
  63.  
  64. void Obrot(Scianka &A,int a1,int a2,int a3,Scianka &B,int b1,int b2,int b3,Scianka &C,int c1,int c2,int c3,Scianka &D,int d1,int d2,int d3){
  65.     char pomoc1,pomoc2,pomoc3;
  66.     pomoc1=A.Tab[a1];A.Tab[a1]=B.Tab[b1];B.Tab[b1]=C.Tab[c1];C.Tab[c1]=D.Tab[d1];D.Tab[d1]=pomoc1;
  67.     pomoc2=A.Tab[a2];A.Tab[a2]=B.Tab[b2];B.Tab[b2]=C.Tab[c2];C.Tab[c2]=D.Tab[d2];D.Tab[d2]=pomoc2;
  68.     pomoc3=A.Tab[a3];A.Tab[a3]=B.Tab[b3];B.Tab[b3]=C.Tab[c3];C.Tab[c3]=D.Tab[d3];D.Tab[d3]=pomoc3;
  69. }
  70.  
  71. class Kostka{
  72. private:
  73.     Scianka Up,Left,Front,Right,Back,Down;
  74. public:
  75.     Kostka();
  76.     void U();
  77.     void u();
  78.     void L();
  79.     void l();
  80.     void F();
  81.     void f();
  82.     void R();
  83.     void r();
  84.     void B();
  85.     void b();
  86.     void D();
  87.     void d();
  88.     void WypiszK();
  89.     bool CzyUlozona();
  90.     void Ruch(char c);
  91. };
  92.  
  93. Kostka::Kostka():Up('W'),Left('R'),Front('B'),Right('O'),Back('G'),Down('Y'){
  94. }
  95.  
  96. void Kostka::U(){
  97.     Up.ObrotC();
  98.     Obrot(Back,0,1,2,Right,0,1,2,Front,0,1,2,Left,0,1,2);
  99. }
  100. void Kostka::u(){
  101.     Up.ObrotCA();
  102.     Obrot(Left,0,1,2,Front,0,1,2,Right,0,1,2,Back,0,1,2);
  103. }
  104. void Kostka::L(){
  105.     Left.ObrotC();
  106.     Obrot(Back,2,3,4,Down,6,7,0,Front,6,7,0,Up,6,7,0);
  107. }
  108. void Kostka::l(){
  109.     Left.ObrotCA();
  110.     Obrot(Up,6,7,0,Front,6,7,0,Down,6,7,0,Back,2,3,4);
  111. }
  112. void Kostka::F(){
  113.     Front.ObrotC();
  114.     Obrot(Left,4,3,2,Down,2,1,0,Right,0,7,6,Up,6,5,4);
  115. }
  116. void Kostka::f(){
  117.     Front.ObrotCA();
  118.     Obrot(Up,6,5,4,Right,0,7,6,Down,2,1,0,Left,4,3,2);
  119. }
  120. void Kostka::R(){
  121.     Right.ObrotC();
  122.     Obrot(Front,4,3,2,Down,4,3,2,Back,0,7,6,Up,4,3,2);
  123. }
  124. void Kostka::r(){
  125.     Right.ObrotCA();
  126.     Obrot(Up,4,3,2,Back,0,7,6,Down,4,3,2,Front,4,3,2);
  127. }
  128. void Kostka::B(){
  129.     Back.ObrotC();
  130.     Obrot(Right,4,3,2,Down,6,5,4,Left,0,7,6,Up,2,1,0);
  131. }
  132. void Kostka::b(){
  133.     Back.ObrotCA();
  134.     Obrot(Up,2,1,0,Left,0,7,6,Down,6,5,4,Right,4,3,2);
  135. }
  136. void Kostka::D(){
  137.     Down.ObrotC();
  138.     Obrot(Back,6,5,4,Right,6,5,4,Front,6,5,4,Left,6,5,4);
  139. }
  140. void Kostka::d(){
  141.     Down.ObrotCA();
  142.     Obrot(Left,6,5,4,Front,6,5,4,Right,6,5,4,Back,6,5,4);
  143. }
  144. bool Kostka::CzyUlozona(){
  145.     for(int i=0;i<8;i++){
  146.         if(Up.Get(i)!='W') {cout<<"False"<<endl;return false;}
  147.         if(Down.Get(i)!='Y')  {cout<<"False"<<endl;return false;}
  148.         if(Front.Get(i)!='B') {cout<<"False"<<endl;return false;}
  149.         if(Back.Get(i)!='G') {cout<<"False"<<endl;return false;}
  150.         if(Right.Get(i)!='O') {cout<<"False"<<endl;return false;}
  151.         if(Left.Get(i)!='R')  {cout<<"False"<<endl;return false;}}
  152.     {cout<<"True"<<endl;return true;}
  153.  
  154. }
  155.  
  156. void Kostka::WypiszK(){
  157.     cout<<"    ";Up.Wypisz(1);cout<<endl<<"    ";Up.Wypisz(2);cout<<endl<<"    ";Up.Wypisz(3);cout<<endl;
  158.     cout<<endl;Left.Wypisz(1);Front.Wypisz(1);Right.Wypisz(1);Back.Wypisz(1);
  159.     cout<<endl;Left.Wypisz(2);Front.Wypisz(2);Right.Wypisz(2);Back.Wypisz(2);
  160.     cout<<endl;Left.Wypisz(3);Front.Wypisz(3);Right.Wypisz(3);Back.Wypisz(3);cout<<endl;
  161.     cout<<endl;cout<<"    ";Down.Wypisz(1);cout<<endl<<"    ";Down.Wypisz(2);cout<<endl<<"    ";Down.Wypisz(3);cout<<endl;
  162. }
  163.  
  164.  
  165. int main(){
  166.     Kostka P;
  167.     while(true){
  168.     cout<<"MENU\n"<<"U,u,L,l,F,f,R,r,B,b,D,d - wybor obrotu\n"<<"W - wypisanie kostki\n"<<"K - koniec programu\n"<<"C - Sprawdza, czy kostka jest ulozona\n";
  169.     char wybor;
  170.     cin>>wybor;
  171.     switch(wybor){
  172.         case('U'):{P.U();break;}
  173.         case('u'):{P.u();break;}
  174.         case('L'):{P.L();break;}
  175.         case('l'):{P.l();break;}
  176.         case('F'):{P.F();break;}
  177.         case('f'):{P.f();break;}
  178.         case('R'):{P.R();break;}
  179.         case('r'):{P.r();break;}
  180.         case('B'):{P.B();break;}
  181.         case('b'):{P.b();break;}
  182.         case('D'):{P.D();break;}
  183.         case('d'):{P.d();break;}
  184.         case('W'):{P.WypiszK();break;}
  185.         case('C'):{P.CzyUlozona();break;}
  186.         case('K'):{return 0;break;}
  187.     }}
  188.     return 0;
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement