首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于面向对象的有关问题

2013-03-25 
关于面向对象的问题#includeiostream#includeconio.h#includewindows.husing namespace stdvoid fr

关于面向对象的问题

#include<iostream>
#include<conio.h>
#include<windows.h>
using namespace std;
void frame()
{
cout<<"****************************************"<<endl;
cout<<"*                                      *"<<endl;
cout<<"*                                      *"<<endl;
cout<<"*            Welcome                   *"<<endl;
cout<<"*         阅读规则-->R/r               *"<<endl;
cout<<"*         开始游戏--Y/y                *"<<endl;
cout<<"*         突出游戏--N/n                *"<<endl;
cout<<"*         看答案  --A/a                *"<<endl;
cout<<"*                                      *"<<endl;
cout<<"****************************************"<<endl;
}
void answer()
{
system("cls");
char a[16][8]={{'0',1,1,1,' ',2,2,2},{'0',1,1,' ',1,2,2,2},{'0',1,1,2,1,' ',2,2},{'0',1,1,2,1,2,' ',2},{'0',1,1,2,' ',2,1,2},{'0',1,' ',2,1,2,1,2},{'0',' ',1,2,1,2,1,2},{'0',2,1,' ',1,2,1,2},{'0',2,1,2,1,' ',1,2,},{'0',2,1,2,1,2,1,' '},{'0',2,1,2,1,2,' ',1},{'0',2,1,2,' ',2,1,1},{'0',2,' ',2,1,2,1,1},{'0',2,2,' ',1,2,1,1},{'0',2,2,2,1,' ',1,1},{'0',2,2,2,' ',1,1,1}};
for(int i=0;i<16;i++)
{
Sleep(1500);
for(int j=1;j<8;j++)
cout<<" "<<a[i][j]<<" ";
cout<<endl;
cout<<"————————————"<<endl;
}
}
void Rule()
{
cout<<"移动青蛙 让他们兑换位置"<<endl;
cout<<"他们的标号是1~7"<<endl;
cout<<"操作方法"<<endl;
cout<<"输入你要移动的青蛙编号"<<endl;
cout<<"0重新开始 9退出游戏 10 查看答案"<<endl;
}
void display(char *p)
{
for(int i=1;i<8;i++)
cout<<" "<<*(p+i)<<" ";
cout<<endl;
cout<<"————————————"<<endl;
}
bool win(char *p)
{
if(*(p+1)==2&&*(p+2)==2&&*(p+3)==2&&*(p+5)==1&&*(p+6)==1&&*(p+7)==1)
cout<<"You win"<<endl;
else return false;
return true;
}
void play(char *p,int n=1,int space=4)
{
display(p);
static bool win_or_not=false;
while(!win_or_not)
{
cout<<"请输入你要移动的青蛙";
cin>>n;
system("cls");
if((space==1&&*(p+2)==*(p+3))||(space==7&&*(p+6)==*(p+5)))
{
cout<<"You lose"<<endl;


break;
}
else if(n==10)
answer();
else if(n==9)
{
cout<<"quiting..."<<endl;
break;
}
else if(n==0)
{
system("cls");
char b[8]={'0',1,1,1,' ',2,2,2};
play(b);
}
else if(n<space-2||n>space+2)
{
cout<<"不能移动"<<endl;
play(p,n,space);
}
else if(((*(p+n)==1)&&(n>space))||(*(p+n)==2)&&(n<space))
{
cout<<"不能移动"<<endl;
play(p,n,space);
}
else 
{
char temp1;
int temp2;
temp1=*(p+n);
*(p+n)=*(p+space);
*(p+space)=temp1;
temp2=n;
n=space;
space=temp2;
win_or_not=win(p);
play(p,n,space);
}
break;
}
}
int main()
{
char a[8]={'0',1,1,1,' ',2,2,2};
frame();
char choose;
cin>>choose;
switch(choose)
{
case 'R':;
case 'r':Rule();
cout<<"是否开始游戏"<<endl;
char choose2;
cin>>choose2;
switch(choose2)
{
case 'Y':;
case 'y':system("cls");play(a);break;
case 'N':;
case 'n':return 0;
}
case 'Y':;
case 'y':system("cls");play(a);break;
case 'N':;
case 'n':return 0;
case 'A':;
case 'a':answer();break;
default:
cout<<"error"<<endl;
}
}


这是我写的一个小游戏的代码 学了半年多c++了 感觉自己还是总在面向过程的圈子里混 看到题 直接就是面向过程的思路  求大神 以上的代码要怎么该才能符合面向对象的要求 还有就是这个游戏还可以优化一下吗 谢谢大神!
[解决办法]
把青蛙抽象一下,都有哪些动作(可以对其进行操作,方法),属性(附带的数据成员),封装成类,然后多个青蛙就是这个类的具体实例...
[解决办法]
建议楼主认真看几遍《C++ primer》
[解决办法]
学java又何尝不是面向过程,只不过他强制你用类。
就算全部用类,那也不是面向对象。
面向对象 要跳出程序,跑到 旁观者 角度去看。
[解决办法]
首先你知道怎么才算是真正的面向对象吗?就算了封装成了类,可是调用的时候也还是面向过程,然后一步一步走
[解决办法]
数据封装起来,规划好模块和数据结构定义就行
[解决办法]
面向对象是个很高深的话题啊,学习中,呵呵

热点排行