Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- using namespace std;
- class Scianka{
- private:
- char *Tab;
- const char KolorSrodka;
- public:
- Scianka(char kolor);
- ~Scianka();
- void ObrotC();
- void ObrotCA();
- void Wypisz();
- void Wypisz(int i);
- void Set(int i,char k);
- char Get(int i);
- 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);
- };
- Scianka::Scianka(char kolor):KolorSrodka(kolor){
- Tab=new char[8];
- for (int i=0;i<8;i++){
- Tab[i]=kolor;
- }
- }
- Scianka::~Scianka(){
- delete []Tab;}
- void Scianka::ObrotC(){
- char pomoc1,pomoc2;
- pomoc1=Tab[0];Tab[0]=Tab[6];Tab[6]=Tab[4];Tab[4]=Tab[2];Tab[2]=pomoc1;
- pomoc2=Tab[1];Tab[1]=Tab[7];Tab[7]=Tab[5];Tab[5]=Tab[3];Tab[3]=pomoc2;
- }
- void Scianka::ObrotCA(){
- char pomoc1,pomoc2;
- pomoc1=Tab[0];Tab[0]=Tab[2];Tab[2]=Tab[4];Tab[4]=Tab[6];Tab[6]=pomoc1;
- pomoc2=Tab[1];Tab[1]=Tab[3];Tab[3]=Tab[5];Tab[5]=Tab[7];Tab[7]=pomoc2;
- }
- void Scianka::Wypisz(){
- printf("%c %c %c\n",Tab[0],Tab[1],Tab[2]);
- printf("%c %c %c\n",Tab[7],KolorSrodka,Tab[3]);
- printf("%c %c %c\n\n",Tab[6],Tab[5],Tab[4]);
- }
- void Scianka::Wypisz(int i){
- if (i==1){printf("%c%c%c ",Tab[0],Tab[1],Tab[2]);}
- else if (i==2){printf("%c%c%c ",Tab[7],KolorSrodka,Tab[3]);}
- else if (i==3){printf("%c%c%c ",Tab[6],Tab[5],Tab[4]);}
- else{printf("Podaj bledne i\n");}
- }
- void Scianka::Set(int i,char k){
- Tab[i]=k;
- }
- char Scianka::Get(int i){
- return Tab[i];}
- 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){
- char pomoc1,pomoc2,pomoc3;
- 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;
- 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;
- 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;
- }
- class Kostka{
- private:
- Scianka Up,Left,Front,Right,Back,Down;
- public:
- Kostka();
- void U();
- void u();
- void L();
- void l();
- void F();
- void f();
- void R();
- void r();
- void B();
- void b();
- void D();
- void d();
- void WypiszK();
- bool CzyUlozona();
- void Ruch(char c);
- };
- Kostka::Kostka():Up('W'),Left('R'),Front('B'),Right('O'),Back('G'),Down('Y'){
- }
- void Kostka::U(){
- Up.ObrotC();
- Obrot(Back,0,1,2,Right,0,1,2,Front,0,1,2,Left,0,1,2);
- }
- void Kostka::u(){
- Up.ObrotCA();
- Obrot(Left,0,1,2,Front,0,1,2,Right,0,1,2,Back,0,1,2);
- }
- void Kostka::L(){
- Left.ObrotC();
- Obrot(Back,2,3,4,Down,6,7,0,Front,6,7,0,Up,6,7,0);
- }
- void Kostka::l(){
- Left.ObrotCA();
- Obrot(Up,6,7,0,Front,6,7,0,Down,6,7,0,Back,2,3,4);
- }
- void Kostka::F(){
- Front.ObrotC();
- Obrot(Left,4,3,2,Down,2,1,0,Right,0,7,6,Up,6,5,4);
- }
- void Kostka::f(){
- Front.ObrotCA();
- Obrot(Up,6,5,4,Right,0,7,6,Down,2,1,0,Left,4,3,2);
- }
- void Kostka::R(){
- Right.ObrotC();
- Obrot(Front,4,3,2,Down,4,3,2,Back,0,7,6,Up,4,3,2);
- }
- void Kostka::r(){
- Right.ObrotCA();
- Obrot(Up,4,3,2,Back,0,7,6,Down,4,3,2,Front,4,3,2);
- }
- void Kostka::B(){
- Back.ObrotC();
- Obrot(Right,4,3,2,Down,6,5,4,Left,0,7,6,Up,2,1,0);
- }
- void Kostka::b(){
- Back.ObrotCA();
- Obrot(Up,2,1,0,Left,0,7,6,Down,6,5,4,Right,4,3,2);
- }
- void Kostka::D(){
- Down.ObrotC();
- Obrot(Back,6,5,4,Right,6,5,4,Front,6,5,4,Left,6,5,4);
- }
- void Kostka::d(){
- Down.ObrotCA();
- Obrot(Left,6,5,4,Front,6,5,4,Right,6,5,4,Back,6,5,4);
- }
- bool Kostka::CzyUlozona(){
- for(int i=0;i<8;i++){
- if(Up.Get(i)!='W') {cout<<"False"<<endl;return false;}
- if(Down.Get(i)!='Y') {cout<<"False"<<endl;return false;}
- if(Front.Get(i)!='B') {cout<<"False"<<endl;return false;}
- if(Back.Get(i)!='G') {cout<<"False"<<endl;return false;}
- if(Right.Get(i)!='O') {cout<<"False"<<endl;return false;}
- if(Left.Get(i)!='R') {cout<<"False"<<endl;return false;}}
- {cout<<"True"<<endl;return true;}
- }
- void Kostka::WypiszK(){
- cout<<" ";Up.Wypisz(1);cout<<endl<<" ";Up.Wypisz(2);cout<<endl<<" ";Up.Wypisz(3);cout<<endl;
- cout<<endl;Left.Wypisz(1);Front.Wypisz(1);Right.Wypisz(1);Back.Wypisz(1);
- cout<<endl;Left.Wypisz(2);Front.Wypisz(2);Right.Wypisz(2);Back.Wypisz(2);
- cout<<endl;Left.Wypisz(3);Front.Wypisz(3);Right.Wypisz(3);Back.Wypisz(3);cout<<endl;
- cout<<endl;cout<<" ";Down.Wypisz(1);cout<<endl<<" ";Down.Wypisz(2);cout<<endl<<" ";Down.Wypisz(3);cout<<endl;
- }
- int main(){
- Kostka P;
- while(true){
- 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";
- char wybor;
- cin>>wybor;
- switch(wybor){
- case('U'):{P.U();break;}
- case('u'):{P.u();break;}
- case('L'):{P.L();break;}
- case('l'):{P.l();break;}
- case('F'):{P.F();break;}
- case('f'):{P.f();break;}
- case('R'):{P.R();break;}
- case('r'):{P.r();break;}
- case('B'):{P.B();break;}
- case('b'):{P.b();break;}
- case('D'):{P.D();break;}
- case('d'):{P.d();break;}
- case('W'):{P.WypiszK();break;}
- case('C'):{P.CzyUlozona();break;}
- case('K'):{return 0;break;}
- }}
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement