Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 石头剪刀图形小程序的对象与类方法编程?_Java_Oop_Applet - Fatal编程技术网

Java 石头剪刀图形小程序的对象与类方法编程?

Java 石头剪刀图形小程序的对象与类方法编程?,java,oop,applet,Java,Oop,Applet,我必须做一个设计某种游戏的最后项目,我决定用石头剪刀。我开始编写程序时没有考虑任何面向对象的编程风格,并且意识到我必须修改它才能为项目获得最大分数。然而,当我以面向对象的形式重写它时,它将无法像没有面向对象的方式创建的那样工作 这是我的OOP程序: import javax.swing.*; import java.awt.*; import java.applet.*; import java.util.Scanner; import java.util.Arrays; public cla

我必须做一个设计某种游戏的最后项目,我决定用石头剪刀。我开始编写程序时没有考虑任何面向对象的编程风格,并且意识到我必须修改它才能为项目获得最大分数。然而,当我以面向对象的形式重写它时,它将无法像没有面向对象的方式创建的那样工作

这是我的OOP程序:

import javax.swing.*;
import java.awt.*;
import java.applet.*;
import java.util.Scanner;
import java.util.Arrays;

public class RockPaperScissorss extends Applet
{
    protected String answer;
    protected Image rock, paper, scissors;
    protected boolean playAgain;
    public void init()
    {
        answer = Expo.enterStringGUI("What is your first draw?");
        rock = getImage(getDocumentBase(),"Rock.gif");
        paper = getImage(getDocumentBase(),"Paper.gif");
        scissors = getImage(getDocumentBase(),"Scissors.gif");
    }

    public void paint(Graphics g)
    {
        Output output = new Output();
        playAgain = true;
        while(playAgain == true)
        {
        output.displayYouAndComp(g);
        output.getCompDraw();
        output.displayPic1(g);
        output.displayComp1(g);
        output.whoWon();
        output.printResult(g);
        output.playAgain();
        if(playAgain == true)
           init();
        }
    }
}

class Initialize extends RockPaperScissorss
{
    protected String again;  
    public void displayYouAndComp(Graphics g)
    {
        Expo.setFont(g,"Algerian",Font.BOLD,50);
        Expo.drawString(g,"You",0,50);
        Expo.drawString(g,"Computer",500,50);
    }

    public boolean playAgain()
    {
        again = Expo.enterStringGUI("Would you like to play again? (Y/N)");
        if(again.equals("Y") || again.equals("y"))
           playAgain = true;
        else
           playAgain = false;
        return playAgain;
    }
}

class Person extends Initialize
{       
    public void displayPic1(Graphics g)
    {
        if(answer.equals("rock"))
        g.drawImage(rock,0,100,this);
        else if(answer.equals("paper"))
        g.drawImage(paper,0,100,this);
        else 
        g.drawImage(scissors,0,100,this);
    }
}

class Computer extends Person
{    
    protected int draw;    
    public void getCompDraw()
    {
        draw = Expo.random(0,2);
    }

    public void displayComp1(Graphics g)
    {
        if(draw == 1)
        g.drawImage(rock,500,100,this);
        else if(draw == 2)
        g.drawImage(paper,500,100,this);
        else 
        g.drawImage(scissors,500,100,this);
    }
}

class Output extends Computer
{   
    protected boolean won;
    protected int tieGame;
    protected String result;
    protected String newArray[];    

    public String[] whoWon()
    {
        newArray = new String[1];
        String personAnswers[] = {answer};
        int compAnswers[] = {draw};
        for(int k = 0; k < 1; k++)
        {
           if(personAnswers[k].equals("rock"))
           {
              switch(compAnswers[k])
              {
                case 1: //rock
                     newArray[k] = "tie";
                     break;
                case 2: //paper
                     newArray[k] = "loss";
                     break;
                case 3: //scissors
                     newArray[k] = "win";
                     break;
              }
           }
           else if(personAnswers[k].equals("paper"))
           {
               switch(compAnswers[k])
               {
                   case 1:
                        newArray[k] = "win";
                        break;
                   case 2:
                        newArray[k] = "tie";
                        break;
                   case 3:
                        newArray[k] = "loss";
                        break;
               }
           }
           else
           {
               switch(compAnswers[k]) //equals scissors
               {
                   case 1: 
                        newArray[k] = "loss";
                        break;
                   case 2:
                        newArray[k] = "win";
                        break;
                   case 3:
                        newArray[k] = "tie";
                        break;
               }
           }
        }
        return newArray;
    }

    public void printResult(Graphics g) 
    {
        String[] result = newArray;
        Expo.setFont(g,"Algerian",Font.BOLD,50);
        int x = 200;
        for(int k = 0; k < 1; k++)
        {
        if(result[k].equals("loss"))
           Expo.drawString(g,"You lost!",700,x);
        else if(result[k].equals("tie"))    
           Expo.drawString(g,"It's a tie!",700,x);
        else
           Expo.drawString(g,"You won!",700,x);
        }
    }
}
import javax.swing.*;
导入java.awt.*;
导入java.applet.*;
导入java.util.Scanner;
导入java.util.array;
公共类RockPaperScissor扩展小程序
{
保护字符串应答;
受保护的图像:石头、布、剪刀;
再次受到保护;
公共void init()
{
答案=Expo.enterStringGUI(“你的第一张画是什么?”);
rock=getImage(getDocumentBase(),“rock.gif”);
paper=getImage(getDocumentBase(),“paper.gif”);
剪刀=getImage(getDocumentBase(),“scissors.gif”);
}
公共空间涂料(图g)
{
输出=新输出();
再次播放=正确;
while(再次播放==true)
{
输出。显示you和comp(g);
output.getCompDraw();
输出。显示PIC1(g);
输出.displayComp1(g);
output.whowen();
输出打印结果(g);
output.playreach();
如果(再次播放==真)
init();
}
}
}
类初始化扩展RockPaperScissor
{
再次保护字符串;
公共无效显示You和Comp(图g)
{
Expo.setFont(g,“阿尔及利亚”,字体粗体,50);
世博会拉丝(g,“你”,0,50);
世博会。拉丝(g,“计算机”,500,50);
}
公共布尔值
{
再次=Expo.enterStringGUI(“您想再次玩吗?(Y/N)”);
如果(再次.equals(“Y”)|再次.equals(“Y”))
再次播放=正确;
其他的
再次播放=错误;
再回来玩;
}
}
类Person扩展初始化
{       
公共空白显示PIC1(图g)
{
如果(答案等于(“岩石”))
g、 drawImage(rock,0100,本);
否则,如果(答案等于(“纸”))
g、 drawImage(纸张,0100,本);
其他的
g、 drawImage(剪刀,0100,本);
}
}
类计算机扩展人
{    
保护整数绘制;
public void getCompDraw()
{
抽签=博览会随机(0,2);
}
公共无效显示组件1(图形g)
{
如果(绘图==1)
g、 drawImage(岩石,500100,本);
否则如果(绘图==2)
g、 drawImage(纸张,500100,本);
其他的
g、 drawImage(剪刀,500100,本);
}
}
类输出扩展了计算机
{   
受保护的布尔元;
受保护的游戏;
保护字符串结果;
受保护字符串newArray[];
公共字符串[]whowen()
{
newArray=新字符串[1];
字符串personAnswers[]={answer};
int compAnswers[]={draw};
对于(int k=0;k<1;k++)
{
if(personAnswers[k].equals(“rock”))
{
交换机(扩展器[k])
{
案例1://岩石
newArray[k]=“tie”;
打破
案例2://文件
newArray[k]=“丢失”;
打破
案例3://剪刀
newArray[k]=“赢”;
打破
}
}
else if(personAnswers[k].等于(“纸张”))
{
交换机(扩展器[k])
{
案例1:
newArray[k]=“赢”;
打破
案例2:
newArray[k]=“tie”;
打破
案例3:
newArray[k]=“丢失”;
打破
}
}
其他的
{
开关(compAnswers[k])//等于剪刀
{
案例1:
newArray[k]=“丢失”;
打破
案例2:
newArray[k]=“赢”;
打破
案例3:
newArray[k]=“tie”;
打破
}
}
}
返回新数组;
}
公共作废打印结果(图形g)
{
String[]result=newArray;
Expo.setFont(g,“阿尔及利亚”,字体粗体,50);
int x=200;
对于(int k=0;k<1;k++)
{
如果(结果[k]。等于(“损失”))
世博会拉丝(g,“你输了!”,700,x);
else if(结果[k].equals(“tie”))
世博会用的抽绳(g,“这是一条领带!”,700,x);
其他的
世博会用的抽绳(g,“你赢了!”,700,x);
}
}
}
与我的非OOP代码相比:

import javax.swing.*;
    import java.awt.*;
    import java.applet.*;
    import java.util.Scanner;
    import java.util.Arrays;

    public class RockPaperScissorsss extends Applet
    {
        String answer1, answer2, answer3; //first draw, etc.
        int firstDraw, secondDraw, thirdDraw;
        int tieGame;
        String[] newArray;
        Image rock, paper, scissors;
        boolean playAgain;
        String again;

        public void init()
        {
            answer1 = Expo.enterStringGUI("What is your first draw?");
            rock = getImage(getDocumentBase(),"Rock.gif");
            paper = getImage(getDocumentBase(),"Paper.gif");
            scissors = getImage(getDocumentBase(),"Scissors.gif");
            newArray = new String[1];
        }

        public void paint(Graphics g)
        {
            playAgain = true;
            while(playAgain == true)
            {
            displayYouAndComp(g);
            getCompDraw();
            displayPic1(g);
            displayComp1(g);
            whoWon();
            printResult(g);
            playAgain();
            if(playAgain == true)
               init();
            }
        }

        public boolean playAgain()
        {
            again = Expo.enterStringGUI("Would you like to play again? (Y/N)");
            if(again.equals("Y") || again.equals("y"))
               playAgain = true;
            else
               playAgain = false;
            return playAgain;
        }

        public void displayYouAndComp(Graphics g)
        {
            Expo.setFont(g,"Algerian",Font.BOLD,50);
            Expo.drawString(g,"You",0,50);
            Expo.drawString(g,"Computer",500,50);
        }

        public void getCompDraw()
        {
            firstDraw = Expo.random(0,2);
            secondDraw = Expo.random(0,2);
            thirdDraw = Expo.random(0,2);
        }

        public void displayPic1(Graphics g)
        {
            if(answer1.equals("rock"))
            g.drawImage(rock,0,100,this);
            else if(answer1.equals("paper"))
            g.drawImage(paper,0,100,this);
            else 
            g.drawImage(scissors,0,100,this);
        }

        public void displayComp1(Graphics g)
        {
            if(firstDraw == 1)
            g.drawImage(rock,500,100,this);
            else if(firstDraw == 2)
            g.drawImage(paper,500,100,this);
            else 
            g.drawImage(scissors,500,100,this);
        }

        public String[] whoWon()
        {
            String personAnswers[] = {answer1};
            int compAnswers[] = {firstDraw};
            for(int k = 0; k < 1; k++)
            {
               if(personAnswers[k].equals("rock"))
               {
                  switch(compAnswers[k])
                  {
                    case 1: //rock
                         newArray[k] = "tie";
                         break;
                    case 2: //paper
                         newArray[k] = "loss";
                         break;
                    case 3: //scissors
                         newArray[k] = "win";
                         break;
                  }
               }
               else if(personAnswers[k].equals("paper"))
               {
                   switch(compAnswers[k])
                   {
                       case 1:
                            newArray[k] = "win";
                            break;
                       case 2:
                            newArray[k] = "tie";
                            break;
                       case 3:
                            newArray[k] = "loss";
                            break;
                   }
               }
               else
               {
                   switch(compAnswers[k]) //equals scissors
                   {
                       case 1: 
                            newArray[k] = "loss";
                            break;
                       case 2:
                            newArray[k] = "win";
                            break;
                       case 3:
                            newArray[k] = "tie";
                            break;
                   }
               }
            }
            return newArray;
        }

        public void printResult(Graphics g) 
        {
            String[] result = newArray;
            Expo.setFont(g,"Algerian",Font.BOLD,50);
            int x = 200;        
            for(int k = 0; k < 1; k++)
            {
            if(result[k].equals("loss"))
               Expo.drawString(g,"You lost!",700,x);
            else if(result[k].equals("tie"))    
               Expo.drawString(g,"It's a tie!",700,x);
            else
               Expo.drawString(g,"You won!",700,x);
            x += 200;
            }
        }
    }
import javax.swing.*;
导入java.awt.*;
导入java.applet.*;
导入java.util.Scanner;
导入java.util.array;
公共类RockPaperScissors扩展小程序
{
字符串answer1、answer2、answer3;//第一次抽签,等等。
int firstDraw、secondDraw、thirdDraw;
国际比赛;
字符串[]新数组;
像石头、布、剪刀;
再次布尔播放;
再串一次;
公共void init()
{
answer1=Expo.enterStringGUI(“你的第一张画是什么?”);
rock=getImage(getDocumentBase(),“rock.gif”);
paper=getImage(getDocumentBase(),“paper.gif”);
剪刀=getImage(getDocumentBase(),“scissors.gif”);
newArray=新字符串[1];
}
公共空间涂料(图g)
{
再次播放=正确;
while(再次播放==true)
{
显示you和comp(g);
getCompDraw();
显示PIC1(g);
显示comp1(g);
whowen();
打印结果(g