zoukankan      html  css  js  c++  java
  • 每日总结

    今天完成小学期的第六个项目,也就是井字棋,井字棋的规矩是死的,先手有可能赢,后手最多平局。明天研究小学期的第七个项目。

    附代码:

    #include <iostream>
    #include <time.h>
    #pragma once
    using namespace std;
    int win=0;
    class game
    {
    public:
    char a,b,A[9];
    void choose();
    void display();
    void aplay();
    void bplay1();
    void bplay2(int p);
    void end();
    game(){A[0]='*';A[1]='*';A[2]='*';A[3]='*';A[4]='*';A[5]='*';A[6]='*';A[7]='*';A[8]='*';}
    };
    void game::choose()
    {
    char n;
    cout<<"选择旗子: A、X B、O"<<endl;
    for(int i=0;i<100;i++)
    {
    int temp=0;
    cin>>n;
    if(n=='A') {a='X';b='O';temp=1;}
    else if(n=='B') {a='O';b='X';temp=1;}
    else cout<<"请重新输入!"<<endl;
    if(temp==1) break;
    }
    }
    void game::display()
    {
    for(int i=1;i<=9;i++)
    {
    if(i==1||i==4||i==7)
    {
    cout<<"——————"<<endl;
    }
    if(i==2||i==5||i==8)
    {
    for(int j=i-2;j<i+1;j++)
    {
    cout<<A[j]<<" ";
    }
    }
    if(i==3||i==6||i==9)
    {
    cout<<endl;
    }
    }
    }
    void game::aplay()
    {
    int n;
    cout<<"输入你想要下棋的位置(按照九宫格第一行1,2,3,第二行4,5,6,第三行7,8,9的序号):"<<endl;
    for(int i=0;i<100;i++)
    {
    int temp=0;
    cin>>n;
    if(A[n-1]=='*') {A[n-1]=a;temp=1;}
    if(temp==1) break;
    else cout<<"这个位置已经填了,请重新选择!"<<endl;
    }
    }
    void game::bplay1()
    {
    cout<<"轮到电脑下:"<<endl;
    if(A [4]=='*') A[4]=b;
    else if(A[0]=='*'&&A[1]=='*'&&A[2]=='*'&&A[3]=='*'&&A[4]==a&&A[5]=='*'&&A[6]=='*'&&A[7]=='*'&&A[8]=='*') A[0]=b;
    else if(A[0]==b&&A[4]==a&&A[8]==a&&A[1]=='*'&&A[2]=='*'&&A[3]=='*'&&A[5]=='*'&&A[6]=='*'&&A[7]=='*') A[2]=b;
    else
    {
    int temp1=0;
    for(int i=0,j=0;i<9;i=i+3,j++)
    {
    if(A[i]==a&&A[i+1]==a&&A[i+2]=='*')
    {A[i+2]=b;temp1=1;}
    else if(A[i]==a&&A[i+2]==a&&A[i+1]=='*')
    {A[i+1]=b;temp1=1;}
    else if(A[i+1]==a&&A[i+2]==a&&A[i]=='*')
    {A[i]=b;temp1=1;}
    }
    for(int i=0;i<3;i++)
    {
    if(A[i]==a&&A[i+3]==a&&A[i+6]=='*')
    {A[i+6]=b;temp1=1;}
    else if(A[i]==a&&A[i+6]==a&&A[i+3]=='*')
    {A[i+3]=b;temp1=1;}
    else if(A[i+3]==a&&A[i+6]==a&&A[i]=='*')
    {A[i]=b;temp1=1;}
    }
    if(temp1==0)
    {
    for(int i=0;i<9;i++)
    {
    if(A[i]=='*')
    {
    A[i]=b;
    break;
    }
    }
    }
    }
    }
    void game::bplay2(int p)
    {
    cout<<"轮到电脑下:"<<endl;
    if(p==1) A[4]=b;
    else if(p==2)
    {
    if(A[0]==a||A[2]==a||A[6]==a||A[8]==a)
    {
    if(A[0]==a) A[8]=b;
    else if(A[2]==a) A[6]=b;
    else if(A[6]==a) A[2]=b;
    else A[0]=b;
    }
    if(A[1]==a||A[3]==a||A[5]==a||A[7]==a)
    {
    if(A[1]==a) A[0]=b;
    else if(A[3]==a) A[0]=b;
    else if(A[5]==a) A[8]=b;
    else A[8]=b;
    }
    }
    else if(p==3)
    {
    if(A[0]==a&&A[1]==a) A[2]=b;
    else if(A[0]==a&&A[2]==a) A[1]=b;
    else if(A[0]==a&&A[3]==a) A[6]=b;
    else if(A[0]==a&&A[6]==a) A[3]=b;
    else if(A[0]==a&&A[1]==a) A[2]=b;
    else if(A[6]==a&&A[3]==a) A[0]=b;
    else if(A[2]==a&&A[1]==a) A[0]=b;
    else if(A[2]==a&&A[5]==a) A[8]=b;
    else if(A[6]==a&&A[7]==a) A[8]=b;
    else if(A[8]==a&&A[7]==a) A[6]=b;
    else if(A[8]==a&&A[6]==a) A[7]=b;
    else if(A[8]==a&&A[5]==a) A[2]=b;
    else if(A[8]==a&&A[2]==a) A[5]=b;
    else if(A[7]==a) A[5]=b;
    else if(A[5]==a) A[7]=b;
    }
    }
    void game::end()
    {
    for(int i=0;i<3;i++)
    {
    if(A[i]==b&&A[i+3]==b&&A[i+6]=='*'||A[i]==b&&A[i+3]=='*'&&A[i+6]==b||A[i]=='*'&&A[1+3]==b&&A[i+6]==b) {cout<<"恭喜你,你输了!"<<endl;win=1;exit(0);}
    }
    for(int i=0;i<9;i=i+3)
    {
    if(A[i]==b&&A[i+1]==b&&A[i+1]=='*'||A[i]==b&&A[i+1]=='*'&&A[i+3]==b||A[i]=='*'&&A[i]==b&&A[i+3]==b) {cout<<"恭喜你,你输了!"<<endl;win=1;exit(0);}
    }
    if(A[0]==b&&A[4]==b&&A[8]=='*'||A[0]==b&&A[4]=='*'&&A[8]==b||A[0]=='*'&&A[4]==b&&A[8]==b) {cout<<"恭喜你,你输了!"<<endl;win=1;exit(0);}
    if(A[2]==b&&A[4]==b&&A[6]=='*'||A[2]==b&&A[4]=='*'&&A[6]==b||A[2]=='*'&&A[4]==b&&A[6]==b) {cout<<"恭喜你,你输了!"<<endl;win=1;exit(0);}
    }
    int main()
    {
    char q;
    cout<<"井字棋游戏,先手还是后手: A 、先手 B、后手"<<endl;
    cin>>q;
    game b;
    if(q=='A')
    {
    b.choose ();
    b.display ();
    b.aplay ();
    b.display ();
    b.bplay1 ();
    b.display ();
    b.aplay ();
    b.display ();
    b.bplay1 ();
    b.display ();
    b.aplay ();
    b.display ();
    b.bplay1 ();
    b.display ();
    b.aplay ();
    b.display ();
    b.bplay1 ();
    b.display ();
    b.aplay ();
    b.display ();
    cout<<"平局"<<endl;
    }
    else
    {
    b.choose ();
    b.display ();
    b.bplay2 (1);
    b.display ();
    b.aplay ();
    b.display ();
    b.bplay2 (2);
    b.display ();
    b.aplay ();
    b.display ();
    b.bplay2 (3);
    b.display ();
    b.aplay ();
    b.display ();
    b.end ();
    if(win==0) cout<<"平局"<<endl;
    }
    }

  • 相关阅读:
    软件的概念
    打开别人Android项目的方法
    软件工程
    数据预处理技术
    机器学习之监督学习
    C语言指针与二维数组
    徐涛政治押题
    求二叉树的宽度
    解决在某些IE浏览器下字符乱码的问题
    mac系统不能使用127.0.0.2的解决方案
  • 原文地址:https://www.cnblogs.com/ldy2396/p/14159327.html
Copyright © 2011-2022 走看看