Изменить глаз кости - PullRequest
       6

Изменить глаз кости

0 голосов
/ 19 сентября 2018

Школа дала мне задание сделать игру в кости, в которой пользователь может изменить вид игры в кости, единственная подсказка, которую они мне дали, - это использование таблицы ASCII.

Это мой код и покаЯ бью кирпичную стену, потому что я могу сделать так, чтобы числа были введены пользователем (я не очень изобретателен):

 System.out.println("Which character should be used as the eye of the dice:");
    char eyeDice = input.next().charAt(0);
    System.out.println(eyeDice);


    int Dice;
    Dice = (int)(Math.random()* 6 + 1);

    while (Dice < 6) {
        Dice = (int)(Math.random()* 6 + 1);
        System.out.println(Dice);

    }

Вывод кода выглядит следующим образом:

Which character should be used as the eye of the dice:
$
$
1
4
1
1
1
1
4
1
2
2
6

Process finished with exit code 0

Вот как это должно выглядеть в итоге:

Which character should be used as the eye of the dice:

#
  #
    #

#   #
  #
#   #

#   #

#   #
#   #
#   #


Process finished with exit code 0

Будем весьма благодарны за любые советы или подсказки в правильном направлении!

Ответы [ 6 ]

0 голосов
/ 19 сентября 2018

Если вы хотите минимизировать повторное использование, вы можете использовать оператор switch.EG:

public class Dice 
{
    private static final String LINE_BREAK = "\n";
    public static String getDieFaceFromCharacter(char characterInput)
    {
        String top = "   ";
        String middle = "   ";
        String bottom = "   ";

        switch(characterInput)
        {
            case '5':
                top = "* *";
                bottom = "* *";
            case '1':
                middle = " * ";
                break;
            case '3':
                top = "*  ";
                middle = " * ";
                bottom = "  *";
                break;
            case '2':
                top = "*  ";
                bottom = "  *";
                break;
            case '6':
                middle = "* *";
            case '4':
                top = "* *";
                bottom = "* *";
        }

        return top + LINE_BREAK + middle + LINE_BREAK + bottom;
    }
}
0 голосов
/ 19 сентября 2018

Простая программа для игры в кости

import java.util.Random;
public class Program
{
public static void main(String[] args) {
Random input =new Random();
    int a = 3;
    int b = 6;
    int c =input.nextInt(b-a)+a;

    switch(a){
       case 2:
       System.out.println("*");
       break;
       case 5:
       System.out.println("*  *");
       break;
       case 6:
       System.out.println("* \n * \n  *");
       break;
      case 4:
       System.out.println("*  * \n*  *");
       break;
       case 1:
       System.out.println("*   *\n  *\n*   *");
       break;
       case 3:
       System.out.println(" *  *  *\n\n *  *  *");
       break;


           }
    }
}
0 голосов
/ 19 сентября 2018

Я знаю, что у вас уже есть ответ, но другое возможное решение - использовать ENUM.EG:

public class Dice 
{
    private enum DieFace
    {
        ONE('1', "   \n * \n   "),
        TWO('2', "*  \n   \n  *"),
        THREE('3', "*  \n * \n  *"),
        FOUR('4', "* *\n   \n* *"),
        FIVE('5', "* *\n * \n* *"),
        SIX('6', "* *\n* *\n* *");

        private char characterCode;
        private String representation;

        DieFace(char characterCode, String representation)
        {
            this.characterCode = characterCode;
            this.representation = representation;
        }

        public static DieFace getDieFaceFromCharacterCode(char characterCode)
        {
            DieFace dieFaceFound = null;

            for (DieFace dieFace : values())
            {
                if (dieFace.characterCode == characterCode)
                {
                    dieFaceFound = dieFace;
                    break;
                }
            }

            return dieFaceFound;
        }

        @Override
        public String toString()
        {
            return this.representation;
        }
    }

    public static String getDieFaceFromCharacter(char characterInput)
    {
        DieFace dieFace = DieFace.getDieFaceFromCharacterCode(characterInput);

        return dieFace == null ? null : dieFace.toString();
    }
}

А вот тест для класса:

public class DieTest 
{
    @Test
    public void testGetOne()
    {
        String expectedResult = "   \n * \n   ";
        assertEquals(expectedResult, Dice.getDieFaceFromCharacter('1'));
    }

    @Test
    public void testGetTwo()
    {
        String expectedResult = "*  \n   \n  *";
        assertEquals(expectedResult, Dice.getDieFaceFromCharacter('2'));
    }

    @Test
    public void testGetThree()
    {
        String expectedResult = "*  \n * \n  *";
        assertEquals(expectedResult, Dice.getDieFaceFromCharacter('3'));
    }

    @Test
    public void testGetFour()
    {
        String expectedResult = "* *\n   \n* *";
        assertEquals(expectedResult, Dice.getDieFaceFromCharacter('4'));
    }

    @Test
    public void testGetFive()
    {
        String expectedResult = "* *\n * \n* *";
        assertEquals(expectedResult, Dice.getDieFaceFromCharacter('5'));
    }

    @Test
    public void testGetSix()
    {
        String expectedResult = "* *\n* *\n* *";
        assertEquals(expectedResult, Dice.getDieFaceFromCharacter('6'));
    }

    @Test
    public void testGetInvalid()
    {
        // < 1 is invalid
        assertNull(Dice.getDieFaceFromCharacter('0'));

        // invalid character (non-number)
        assertNull(Dice.getDieFaceFromCharacter('a'));

        // > 6 is invalid
        assertNull(Dice.getDieFaceFromCharacter('7'));
    }
}
0 голосов
/ 19 сентября 2018

Это не полный пример, но он должен был дать вам представление о том, что делать

public static void main(String[] args){
    System.out.println("Which character should be used as the eye of the dice:");
    char eyeDice = input.next().charAt(0);
    System.out.println(eyeDice);


    int Dice;
    Dice = (int)(Math.random()* 6 + 1);

    while (Dice < 6) {
        Dice = (int)(Math.random()* 6 + 1);
        System.out.println(Dice);
        //If statement calling print
    }
}

private void printOne(char character){
    String dice = "\n  #  \n";
    System.out.println(dice.replace('#', character));
}

private void printTwo(char character){
    String dice = "#   #\n\n#   #";
    System.out.println(dice.replace('#', character));
}

private void printThree(char character){
    String dice = "#\n  #\n   #";
    System.out.println(dice.replace('#', character));
}
0 голосов
/ 19 сентября 2018

В данном примере eyeDice было '#'.И брошенный dice (пожалуйста, с небольшим d в Java) будет 3, 5, 4 и 6.

Следовательно, вам нужен некоторый метод, такой как:

void printDice(int dice, char eyDice) {
    ... System.out.println ...
}

иВаш код

int dice = (int)(Math.random()* 6 + 1);

while (dice < 6) {
    printDice(dice, eyeDice);
    dice = (int)(Math.random()* 6 + 1)
}

5 будет напечатан (игнорируя глаз):

System.out.println("?   ?");
System.out.println("  ?  ");
System.out.println("?   ?");
0 голосов
/ 19 сентября 2018

Компьютеры не поставляются с кодом, который превращает цифру «4» в чертеж ascii.

Вам придется написать это самостоятельно.Я предлагаю нарисовать их на листе бумаги.В вашем Java-коде вы можете использовать несколько операторов if / elseif, по одному на каждое из 6 лиц.Каждый блок будет печатать 3 строки.Начните с блокировки персонажа, чтобы использовать его для глаз, затем поработайте над тем, что пользователь может настроить позже.

Вот часть, с которой вы можете начать:

if (dieRoll == 5) {
    System.out.println("* *");
    System.out.println(" * ");
    System.out.println("* *");
} else if (dieRoll == 6) {
    // you figure it out from here...
...