我一直在编写一个刽子手游戏,但我遇到了麻烦,希望你能帮助我

时间:2017-07-09 21:50:10

标签: java

我正在编写一个刽子手游戏,但我遇到了问题,这是整个脚本:

package prueba.ahorcado;

import java.util.Random;
import java.util.Scanner;

public class PruebaAhorcado {

    public static void main(String[] args) 
    {

        int vidas = 3;
        int aciertos = 0;
        int tamaño;
        String incognita = "";
        String signo = " _";
        int veces=0;
        int victoria=0;


        String[] palabras = new String[]{"CASO","TIEMPO","VIDA","PAIS","CAMPO","CAMBIO","MANOS","FALTA","SEGURIDAD","MERCADO"};   
        String palabra = (palabras[new Random().nextInt(palabras.length)]);
        char[] a = palabra.toCharArray();
        char[] b = incognita.toCharArray();
        tamaño = palabra.length();

        while (veces!=tamaño)
        {
        incognita=incognita+signo;
        veces++;
        }

        while(aciertos!=tamaño){

        System.out.println("Vidas: " + vidas);
        System.out.println(palabra);
        System.out.println(incognita);
        Scanner scanner = new Scanner(System.in);
        String opcion = scanner.nextLine().toUpperCase();
        if (palabra.contains(opcion))
        {
            int Indice = palabra.indexOf(opcion);
            System.out.println(Indice);
            //The problem is here

            aciertos++;


        }
        else
        {
            vidas = vidas-1;
        }
        if (vidas==0)
        {
            System.out.println("Has perdido");
            System.exit(0);
        }

        }

        if (aciertos==tamaño)
        {
            System.out.println("Has ganado");

        }

    }

问题在于必须将_更改为已回答的字母,然后将其打印出来。例如:如果单词是" CASO"它会打印

Vidas: 3
(  _ _ _ _

如果我输入" C"它必须打印:

C _ _ _

1 个答案:

答案 0 :(得分:0)

所以...我在这里回答任何问题,请原谅;)

我认为最好的方法是在replace对象中使用StringBuilder方法。像那样:

 if (palabra.contains(opcion))
    {
        int Indice = palabra.indexOf(opcion);
        incognita = new StringBuilder( incognita ).replace( 1+2*Indice, 2+2*Indice, opcion ).toString();
        System.out.println(Indice);
        aciertos++; 
    }

1+2*Indice索引在incognita字符串中具有正确的位置。

我写的这句话并不完美。第二次键入相同的字母时,它无法正常工作。好吧,我认为这是你应该自己思考的事情。

请同样处理代码的纯粹性。对象名称(如Indice)不应以大写字母开头。不要在变量名中使用'ñ'。还尝试以更合理的方式使用缩进和换行。这对你和我们来说都会更好。

真的,真的开始用英语编码。祝你好运。