이 페이지는 코딩도장 데이터의 읽기 전용 정적 보관본입니다.

배스킨라빈스31게임

게임규칙

게임의 참여자들은 차례를 정해 1부터 31까지의 수를 순차적으로 부른다. 한번에 1~3개까지 수를 연달아 부를 수 있으며, 마지막 31을 부른 사람이 진다.

  • 컴퓨터가 무조건 먼저 시작하고,1P는 무조건 2번째로 말한다.컴퓨터가 무조건 이기게 만들어라.
  • LEVEL1 예상
  • 힌트1:4n-2라는 공식을 사용하면 됩니다.
  • 힌트2:이 게임은 31을 부르면 지는 게임이니 30을 부르면 이깁니다.
4n-2

2020/11/27 10:57

고태욱

그리고 이 설명을 깜빡했네요.1부터 시작하고,한번에 3게까지 부를수있어요. - 고태욱, 2020/11/27 11:03
+1 문제가 잘 이해되지 않아 검색해서 수정좀 했습니다. - pahkey, 2020/11/27 19:40
+1 감사합니다.pahkey님.제가 초등학생이고 또 문제를 처음 출제해서 그랬습니다. - 고태욱, 2020/11/27 20:03

34개의 풀이가 있습니다.

숫자 세개를 부를때 0을 누르면 패스입니다. 예외처리는 고려하지 않았고... 결국 2+4n 수를 부르는 사람이 이기는지 이번에 알았네요 실전에 써먹어야 겠어요. 다수의 인간들을 상대할때는 컴퓨터가 무조건 이기게 할 수 없지 않나요?

암튼 초등학생분이 대단하시네요~!

count = 0
while True:
    if (count + 6) % 4 == 2:
        count += 1
        print(count)
        count += 1
        print(count)
    elif (count + 6) % 4 == 1:
        count += 1
        print(count)
        count += 1
        print(count)
        count += 1
        print(count)
    elif (count + 6) % 4 == 3:
        count += 1
        print(count)
    if count == 30:
        break
    for n in range(3):
        my_number = int(input())
        if my_number == count + 1:
            count = my_number
        elif my_number == 0:
            pass

print("졌습니다..")

2020/12/05 22:03

Junghan Shin

네 여러명은 이 공식 성립이 안 됩니다.대신 1:1대결에서는 가능하니다. - 고태욱, 2021/04/19 14:45
print("=="*5 + "베스킨라빈스31 게임을 시작합니다."+"=="*5)
print("COM : 1!\nCOM : 2!")

num = 2
a = 1

while num <30 : 
    a = 1
    ans = 0
    while ans != "n":
        num += 1        
        ans = input("YOU : {0}! (총 3번중 {1}번 말씀하셨습니다. {2}번 더 말할수 있어요.) 숫자 {3}을(를) 말씀하시겠습니까? (y/n)".format(num, a, 3-a, num+1))
        while ans !="y" and ans !="n" :
            ans = input(" 답변오류, y 또는 n 을 입력하세요")
        a += 1
        if a >= 3 and ans == "y":
            num += 1
            print("YOU : {0}! (COM 턴으로 넘어갑니다)".format(num))
            ans = "n"


    while num % 4 !=2 : 
        num += 1
        print("COM : {0}!".format(num))

print("YOU : 31! 내가졌네요.")

술마실때 즐거움을 줬던 게임인데 이렇게 또 즐거움을 주네요

2020/12/14 23:06

으라차차

print('=' * 50 )
print(' ' * 15 , '베스킨라빈스31게임')
print(' ' * 18 , 'made by 최우진')
print('=' * 50 )

x = input('PRESS ANY KEY TO CONTINUE')
turn = 1
COM = ''
player = '0'

while True:
    for i in range(int(player[-1]) + 1, (( 4 * turn ) - 2) + 1 ):
        print(i)
        COM = i
    player = input('콤마로 구분지어 숫자 입력').split(',')
    turn += 1
    if COM == 30 :
        print('플레이어 패배!')
        break
    if player[-1] == '30' :
        print('예상하지 못한 오류입니다. 프로그램을 종료합니다.')
        break


간만에 재미있게 문제를 푼 것 같습니다. 플레이어가 3개를 초과하는 숫자를 입력한다던가 범위 이외의 숫자를 입력할 때는 고려하지 않았습니다. 초등학생분이 이런 문제를 만드시다니 대단하신 것 같습니다.

2021/03/12 10:37

최우진

3개의 숫자를 낼 수 있다면, 상대방이 낸 갯수와 내가 낸 갯수가 4가 되도록 계속해나가면, 나중에는 내가 30까지만 부르면 되도록 합니다. 그러려면 30은 28+2니까 처음에 2개를 부르고, 나머지는 4개씩 맞춰나가면 30까지 채워집니다.

import random

gameover = False
lastnum = 0
random.seed()

def numnottosay(user, n_s, n_e):
    if (n_s+1>=n_e):
        print(user, " 실패")
        exit(0)
    if (n_s+2==n_e):
        return 1
    if (n_s+3==n_e):
        return 2
    if (n_s+4==n_e):
        return 3
    return (n_e-n_s-1)%4

while (not gameover):
    #computer
    #count = random.randrange(1,4)
    count = numnottosay('컴퓨터', lastnum, 31)
    computer_say = ""
    for i in range(1,count+1):
        computer_say = computer_say + str(lastnum+i) + " "
    print(computer_say)
    lastnum = lastnum + count
    if (lastnum>=31):
        print("내가 31을 말해서 졌습니다")
        gameover = True
        continue
    #human

    count = numnottosay('당신', lastnum, 31)
    print("힌트 : ", count)

    human_say = input("다음의 숫자들을 1~3개 빈 칸 띄워서 입력하세요 : ")
    num_list = human_say.split(' ')
    count = len(num_list)
    if (count<1 or count>3):
        print("개수가 적거나 많아서 당신이 졌습니다")
        gameover = True
        continue
    for i in range(0,count):
        if (str(lastnum+i+1) != num_list[i]):
            print("숫자 순서가 틀려서 당신이 졌습니다")
            gameover = True
            break
    lastnum = lastnum+count
    if (lastnum>=31):
        print("당신이 31을 말해서 졌습니다")
        gameover = True
    if (gameover):
        continue

2020/12/04 15:36

김준우

listdb = [0]
print("베스킨라빈스31")
while listdb[-1] < 30 :
    if listdb[-1]%4 != 2:
        listdb.append(listdb[-1]+1)
        n = listdb[-1]
        print("com : ", n)
    else:
        for i in range(3) :
            print(listdb)
            user = int(input("숫자 입력하세요"))
            if user == listdb[-1]+1 :   # 숫자가 연속적으로 이어지는지
                listdb.append(user)     # 제대로 입력시 확인
            else :
                print("입력 횟수 :", 2-i)
            if i == 2 and n == listdb[-1]:  # 3번 눌렀을때 바뀐게 없으면 기회박탈
                print("기회 박탈")
                listdb.append(30)
                break
            print("user :", user)
print("약하구나??")

2020/12/07 22:51

????ㅋ

def beskin():

  i=0

  num=[2,6,10,14,18,22,26,30]

  while i<31:

    print("Computer Turn")

    for t in num:

      if i<t:

        for j in range(i+1,t+1,1):

          print(j)

        i=j

        if i==31:

          print("player win")

          break

        break

    print("player turn")

    v=int(input("write number 1~3"))

    for j in range(i+1,i+v+1,1):

      print(j)

    i=j

    if i==31:

      print("computer win")

      break

beskin()

2020/12/10 20:16

전준혁

def test(narr, num):
        if(int(narr[0]) != (num + 1)):
                print("re input")
                return 0
        elif(len(narr) > 1):
                for i in range(0,len(narr) - 1):
                        if(int(narr[i]) + 1 != int(narr[i+1])):
                                print("re input")
                                return 0
                return 1        

print("computer: 1 2 ")
num = 2
while True:
        narr = input("player: ").split(" ")
        temp = test(narr, num)
        if(temp == 0): continue

        num += len(narr)
        if(len(narr) == 1):
                nl = list(map(str,range(num+1, num+1+3)))
                print("computer: %s" %(" ".join(nl)))
                num = int(nl[-1])
        elif(len(narr) == 2):
                nl = list(map(str,range(num+1, num+1+2)))
                print("computer: %s" %(" ".join(nl)))
                num = int(nl[-1])
        elif(len(narr) == 3):
                nl = list(map(str,range(num+1, num+1+1)))
                print("computer: %s" %(" ".join(nl)))
                num = int(nl[-1])
        if(num == 30):
                print("computer win")
                break

어차피 컴퓨터는 처음에 2까지 불러야하므로 시작을 2로 했습니다. (사실 어떻게 구현해야할지 몰라서...ㅎ)

2020/12/26 19:04

guma go

def game():
    import random 
    x=0

    while True:
        if x>26:
            computer = [x+i for i in range(1,31-x)]
        else :
            computer = [x+i for i in range(1,random.randint(2,4))]
        print('computer : {}'.format(computer))
        x = computer[-1]
        if x==31:
            print("당신이 이겼습니다.")
            break
        count = int(input("몇 개의 숫자를 입력하시겠습니까?: "))
        user = [x+j for j in range(1,count+1)]
        print('user : {}'.format(user),end="\n")
        x=user[-1]
        if x>=31:
            print("당신이 졌습니다.")
            break

2020/12/27 20:28

hankyu

#include <stdio.h>

int main()
{
    printf("베스킨 라빈스 31~\n");
    printf("1:call 0:pass\n");

    printf("c:1\nc:2\nc:3\n");

    int c=3;
    int i;
    int input;

    while(1)
    {
    //player
        for(i=1;i<4;i++)
        {
            c=c+1;
            printf("p:%d\n",c);

            scanf("%d",&input);
            if(input==0)
            {
                printf("p:pass\n");
                break;
            }

        }

        //compueter
        for(i=1;i<4;i++)
        {
            c=c+1;
            printf("c:%d\n",c);

            if(c%3==0&&i!=3)
            {
                printf("c:pass\n");
                break;
            }

        }   
        if (c==30)
            break;
    }

    printf("p:31\n you lose");

    getch();
    return 0;
}

어차피 질 놈 플레이어의 패배만 있게 두었습니다.

2021/01/15 22:33

June

import java.util.Scanner;

public class MyClass {
    public static void main(String []args){
        int currentNumber = 0;
        int userCount = 0;

        Scanner s = new Scanner(System.in);

        System.out.println("게임을 시작하겠습니다.");
        System.out.println();
        System.out.println("CPU >> 1 2");
        currentNumber = 2;

        while(currentNumber < 31) {
            System.out.print("몇 개의 수를 부르시겠습니까? >>");
            while(true) {
                userCount = s.nextInt();
                if (userCount<=3&&userCount>=1) {
                    System.out.println();
                    break;
                }
                else {
                    System.out.println();
                    System.out.print("다시 입력하십시요>>");
                }
            }

            System.out.print("User >> ");
            for(int n = 0; n < userCount; n++) {
                ++currentNumber;
                System.out.print(currentNumber + " ");
            }
            System.out.println();

            System.out.print("CPU >> ");
            for(int i = 0; i < (4-userCount); i++) {
                ++currentNumber;
                if(currentNumber < 31)
                    System.out.print(currentNumber + " ");
            }
            System.out.println();

            userCount = 0;

        }
        s.close();

    }
}

2021/01/29 18:37

김용현

print("1p input: 1")
print("1p input: 2")
for n in range(6, 31, 4):
    user_inputs = input(prompt="2p input: ")
    user_inputs = user_inputs.split()
    user_inputs = [int(val) for val in user_inputs]
    if 31 in user_inputs:
        print("over")
        break
    M = max(user_inputs)
    computer_inputs = [M + 1, M + 2, M + 3]
    for val in computer_inputs:
        if val == n:
            print("1p input: ", val)
            if val == 30:
                print("over")
            break
        else:
            print("1p input: ", val)

2021/03/19 14:08

돈 벌면 뭐하노

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

public class Beskin {
public static void main(String [] args) {
    int p1=0;// 컴퓨터
    int p2=0;
    int num1=0;
    int scoreE=30;
    int num=0;
    int i=2;
    int j=0;//순서정하기
    //컴퓨터가 
    Random ran =new Random(); // 컴퓨터 입력
    Scanner scan = new Scanner(System.in);
    System.out.println("컴퓨터 부터 시작하겠습니다");
    System.out.println ("숫자를 누르세요 : (1),(2),(3) 중에 하나를 누르세요");
    System.out.println("컴퓨터가 누른수는 : 2입니다");
    System.out.println("베스킨 :2입니다");

    int scoreS=2;

    for(j=1; j<15; j++) { // (4n-2 ) =30 n =7 *2회=14

        if (j%2==0) {



               while(scoreS-(4*i-2)!=0) {

                   scoreS=scoreS+1;
                   num1++;
                       }//while 4n-2가 될때까지
               System.out.println("컴퓨터가 누른 수는 :"+num1+"입니다.");
               System.out.println("베스킨 : "+scoreS+"입니다");
               num1=0;
               i++;//횟수증가
               if (scoreS==30) {
                   System.out.println("컴퓨터가 이겼습니다");
               }

        }else {
              System.out.println("p2사용자 차례입니다 수를 누르세요");
            num=scan.nextInt();

            scoreS=num+scoreS;
          System.out.println("p2사용자가 누른 수는"+num+"입니다");
          System.out.println("베스킨 : "+scoreS+"입니다");


        }//else 

    }//for 
}//main
}//class

2021/04/16 11:34

이동훈

print('베스킨라빈스31 게임!')
n = 2 # 컴퓨터 선공
print(n)
while n < 31:
    x = int(input('당신차례 :'))
    n += x
    print(n)

    if n%4==3:   n+=3
    elif n%4==0: n+=2
    else :       n+=1
    print(n)

    if n >= 30 : break
print('Game Over')

2021/05/24 10:49

약사의혼자말

user = []
list_31 = []
print('Start!')

for num in range(1, 32):
    if num in [3, 7, 11, 15, 19, 23, 27, 31]:
        print()
        user = input('>>> ').split(' ')
        if len(user) > 3 or user[0] != str(num):   # 규칙을 어길 시 바로 패배
            break
    if not user:   # 필요없는 출력 방지
        print(num, end=' ')
    while user:
        del user[0]
        break
    list_31.append(num)

print('You Lose!')

2021/06/28 20:56

이예준

python 3.9.6입니다.

last_num = 0
inc_num = 0
turn = 1

while last_num < 31:
    if turn % 2:
        print("computer's turn")
        if last_num%4 == 0: inc_num = 2
        elif last_num%4 == 1: inc_num = 1
        else: inc_num = 3
    else:
        print("player's turn")
        inc_num = int(input('how many numbers to say? '))
        if last_num+inc_num > 31 or not 1 <= inc_num <= 3:
            print('Error!')
            continue
    print(list(range(last_num+1, last_num+inc_num+1)))
    last_num += inc_num
    turn += 1

print('game over!')
if turn % 2:
    print('the winner is the computer.')
else:
    print('the winner is player.')

게임을 해보았습니다.

computer's turn
[1, 2]
player's turn
how many numbers to say? 3
[3, 4, 5]
computer's turn
[6]
player's turn
how many numbers to say? 1
[7]
computer's turn
[8, 9, 10]
player's turn
how many numbers to say? 1
[11]
computer's turn
[12, 13, 14]
player's turn
how many numbers to say? 3
[15, 16, 17]
computer's turn
[18]
player's turn
how many numbers to say? 2
[19, 20]
computer's turn
[21, 22]
player's turn
how many numbers to say? 1
[23]
computer's turn
[24, 25, 26]
player's turn
how many numbers to say? 3
[27, 28, 29]
computer's turn
[30]
player's turn
how many numbers to say? 1
[31]
game over!
the winner is the computer.

2021/08/03 11:09

이준우

다시 도전할 수 있도록 만들어보았습니다

while True:
    num = 0
    print('컴퓨터 선공입니다.')
    num +=1
    print(num)
    num +=1
    print(num)
    while num < 31:
        print('사용자 차례입니다.')
        if num < 30:
            user = int(input('연달아 몇개의 수를 말할까요? (1~3): '))
        else:
            print('사용자는 31을 불러야만 합니다.')
            user = 1
        if user !=1 and user !=2 and user !=3:
            print('잘못된 입력입니다.')
            continue
        else:
            if user == 1:
                num +=1
                print(num)
                if num <31:
                    print('컴퓨터 차례입니다.')
                    num +=1
                    print(num)
                    num +=1
                    print(num)
                    num +=1
                    print(num)
            elif user == 2:
                num +=1
                print(num)
                num +=1
                print(num)
                if num <31:
                    print('컴퓨터 차례입니다.')
                    num +=1
                    print(num)
                    num +=1
                    print(num)
            else:
                num +=1
                print(num)
                num +=1
                print(num)
                num +=1
                print(num)
                if num <31:
                    print('컴퓨터 차례입니다.')
                    num +=1
                    print(num)
    print('사용자가 31을 불렀음으으로 컴퓨터 승리입니다.')
    print('다시 하시겠습니까?')
    while True:
        retry = input('0: 종료, 1: 다시 시작...: ')
        if retry == '0':
            exit()
        elif retry =='1':
            break
        else:
            print('잘못된 입력입니다. 0 또는 1을 입력해주세요.')
            continue

2021/08/08 23:26

Percy

package exam;

import java.util.Scanner;

public class Ex19 {

    public static void main(String[] args) {

        int cnt = 2;
        System.out.println("베스킨라빈스 31 시작 ");
        System.out.println("COM : 2");

        Scanner sc = new Scanner(System.in);



            while(true) {
                System.out.print("1-3숫자 입력 : ");

                int num = sc.nextInt();
                if(num >=4) continue;

                System.out.println("P1");
                System.out.println(cnt += num);     
                System.out.println("COM");
                System.out.println(cnt += 4-num);


                if(cnt == 30) {
                    System.out.print(" P1이 졌습니다 ");
                    break;
                }
            }




            sc.close();




    }
}

java

2021/08/17 11:34

전채

a = 0
for i in range(9):
    b = 4*i+2
    n = b-a
    list2 = [b-t for t in range(n)]
    list2.sort()
    print(list2)
    input_list1 = input("다음 숫자를 최대 3개까지 입력하세요>").split(" ")
    p1 = int(input_list1[0])
    a = int(input_list1[len(input_list1)-1])
    if len(input_list1) >= 4 or p1 != b+1:
        print("잘못된 입력입니다.게임을 종료합니다.")
        break
    if a >= 31:
        print("Game is over, You lose")
        break

2021/09/07 11:18

박대선

count=0
while True:
    result=[]
    while count%4 != 2:
        count+=1
        result.append(count)
    print(result)
    if count==30:
        print('CPU WIN')
        break

    user=list(map(int,input().split(' ')))
    count=user[-1]

2021/09/19 19:06

ninanino

def start_game():
    n = 2
    print("컴퓨터: {0}".format(n))

    while(1):
        h = int(input("사람: "))

        if ((h-n)>3 or h<n):
            print("1~3 큰 수를 다시 얘기하세요")
            continue

        a = (h-2)%4

        if(a==1):
            n = h+3
        elif(a==2):
            n = h+2
        elif(a==3):
            n = h+1
        elif(a==0 or a>=4):
            print("1~3 큰 수를 다시 얘기하세요")
            continue
        # else:
        #     print("1~3 큰 수를 다시 얘기하세요")
        #     continue

        print("컴퓨터: {0}".format(n))

        if (n==30):
            break

    print("컴퓨터가 이겼습니다.")

if __name__ == '__main__': 
    print("="*20)
    print("베스킨라빈스 게임")
    print("="*20)
    start_game()

2021/09/19 22:10

서현준

static int num;
    static boolean onOff;

    static void b31(String x, int y) {
        if (num < 30) {
            System.out.print(x + "는 ");
            for (int i = 1; i <= y; i++) {
                num += 1;
                if (num == 30) {
                    System.out.println(num + "을 불렀습니다.");
                    System.out.println(x + "가 승리했습니다.");
                    onOff = true;
                    return;
                } else {
                    System.out.print(num + " ");
                }
            }
            System.out.println("를 불렀습니다.");
        }

    }

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("베스킨라빈스31을 시작합니다.");
        System.out.println("Pc부터 시작합니다. 최대 3개의 숫자를 부를 수 있습니다.");

        while (!onOff) {
            b31("Pc", (int)(Math.random()*3) + 1);
            System.out.println("유저는 부를 숫자의 갯수를 입력해주세요.");       
            b31("user", s.nextInt());
        }
    }

2021/10/23 23:27

박대현

print('배스킨 라빈스 31 게임입니다. 31을 불르면 지고 한사람당 1~3개의 숫자를 부를수 있습니다.  입력할 숫자는 쉼표로 구분해 주세요.제가 먼저 하겠습니다.')
b=1
print('1,2')
while b==1:
    a=input('숫자를 입력해 주세요')
    c= a.split(',')
    d=5-len(c)
    e=c[-1]
    for i in range(d):
        print(e+i)
    if e==30:
        b=0
print('당신이 졌습니다')




나는 중1(미래의 프로그래머)

파이썬

2021/12/03 14:14

ᄋᄋᄋ

int Answer = 0; //기존 숫자

            while (true)
            {
                Console.Write("증가 시킬 숫자를 입력해주세요[1~3] : ");
                string Count = Console.ReadLine();
                int Plus;
                if (int.TryParse(Count,out Plus))
                {
                    if (Plus <= 3 && Plus > 0)
                    {
                        Answer += Plus;
                    }
                    else
                    {
                        Console.WriteLine("숫자는 최대 3까지만 증가시킬수 있습니다.");
                        continue;
                    }
                }
                else
                {
                    Console.WriteLine("숫자 형식을 입력해주세요.");
                    continue;
                }

                Console.WriteLine("[Me] 현재 베스킨 라빈스 숫자 : " + Answer);

                //컴퓨터가 입력한 숫자

                for (int i = 1; i <= 8; i++)
                {
                    int Temp = 4 * i - 2;
                    if (Answer + 1 == Temp || Answer + 2 == Temp || Answer + 3 == Temp)
                    {
                        Answer = Temp;
                    }
                }


                Console.WriteLine("[컴퓨터] 현재 베스킨 라빈스 숫자 : " + Answer);


                if (Answer == 30)
                {
                    Console.WriteLine("컴퓨터가 이겼습니다.");
                    break;
                }
            }

            Console.ReadKey();

2021/12/09 18:23

MinSeung Kang

def man_list(a):
    print(a)
    m = max(a)
    man = []
    while m%4 != 2:
        m = m+1
        man.append(m)
    return man  

com = list(map(int,input('input new Com list').split(' ')))

while min(com) !=31:
    man = man_list(com)
    print(f' man: {man}')
    com = list(map(int,input('input new Com list').split(' ')))

print('게임이 끝났읍니다.')

del com

2022/01/26 15:35

로만가

import random
import time

n=1
com = [1,2]
print(f'time({n})  com:{com}')
time.sleep(2)

while True:
    n=n+1
    user = [x for x in range(max(com)+1,max(com)+random.randint(2,4))]
    print(f'time({n})  user:{user}')
    time.sleep(2)

    n=n+1
    com = [x for x in range(max(user)+1,max(user)+5-len(user))]
    print(f'time({n})  com:{com}')
    time.sleep(2)

    if max(com)==30  :  break

2022/02/07 15:32

로만가

import java.util.Scanner;

public class MyClass {
    public static void main(String []args){
        int currentNumber = 0;
        int userCount = 0;

        Scanner s = new Scanner(System.in);

        System.out.println("게임을 시작하겠습니다.");
        System.out.println();
        System.out.println("CPU >> 1 2");
        currentNumber = 2;

        while(currentNumber < 31) {
            System.out.print("몇 개의 수를 부르시겠습니까? >>");
            while(true) {
                userCount = s.nextInt();
                if (userCount<=3&&userCount>=1) {
                    System.out.println();
                    break;
                }
                else {
                    System.out.println();
                    System.out.print("다시 입력하십시요>>");
                }
            }

            System.out.print("User >> ");
            for(int n = 0; n < userCount; n++) {
                ++currentNumber;
                System.out.print(currentNumber + " ");
            }
            System.out.println();

            System.out.print("CPU >> ");
            for(int i = 0; i < (4-userCount); i++) {
                ++currentNumber;
                if(currentNumber < 31)
                    System.out.print(currentNumber + " ");
            }
            System.out.println();

            userCount = 0;

        }
        s.close();

    }
}

2022/02/09 10:12

이인범

import java.util.Scanner;

public class MyClass {
    public static void main(String []args){
        int currentNumber = 0;
        int userCount = 0;

        Scanner s = new Scanner(System.in);

        System.out.println("게임을 시작하겠습니다.");
        System.out.println();
        System.out.println("CPU >> 1 2");
        currentNumber = 2;

        while(currentNumber < 31) {
            System.out.print("몇 개의 수를 부르시겠습니까? >>");
            while(true) {
                userCount = s.nextInt();
                if (userCount<=3&&userCount>=1) {
                    System.out.println();
                    break;
                }
                else {
                    System.out.println();
                    System.out.print("다시 입력하십시요>>");
                }
            }

            System.out.print("User >> ");
            for(int n = 0; n < userCount; n++) {
                ++currentNumber;
                System.out.print(currentNumber + " ");
            }
            System.out.println();

            System.out.print("CPU >> ");
            for(int i = 0; i < (4-userCount); i++) {
                ++currentNumber;
                if(currentNumber < 31)
                    System.out.print(currentNumber + " ");
            }
            System.out.println();

            userCount = 0;

        }
        s.close();

    }
}
``````{.java}
import java.util.Scanner;

public class BaskinRobbins31 {
    public static void main(String[] args) {

        int currentNumber = 0;  // 쌓인 숫자
        int userCount = 0;      // 사용자 입력값
        int a = 0;              // 승리(1), 패배(0) 판별

        Scanner s = new Scanner(System.in);

        System.out.println("게임을 시작합니다.");
        System.out.println();
        System.out.println("CPU >> 1, 2");
        currentNumber = 2;

        while(currentNumber < 31) {
            System.out.print("몇 개의 수를 부르겠습니까? >> ");

            while(true) {
                userCount = s.nextInt();
                if (userCount <= 3 && userCount >= 1) {
                    System.out.println();
                    break;
                }else {
                    System.out.println();
                    System.out.print("1~3의 숫자를 입력하세요 >> ");
                    continue;
                }
            }

            System.out.print("User >> ");
// currentNumber += userCount;
            for(int n=0; n<userCount; n++) {
                ++currentNumber;
                System.out.print(currentNumber + " ");
            if(currentNumber >= 31)
                a = 1;
            }
            System.out.println();

            System.out.print("CPU >> ");
// currentNumber += (4-userCount);
            for(int i = 0; i < (4-userCount); i++) {
                ++currentNumber;
                if(currentNumber < 31)
                    System.out.print(currentNumber + " ");
            }
            System.out.println();

        }
        System.out.println(3);
        s.close();

        if(a==1) {
            System.out.println("User 패배");
        }else {
            System.out.println("User 승리");
        }

    }

}

2022/02/09 10:13

이인범

bes = 2
print("computer : 1 2", end="")
while True:
    while True:
        num = input("\n다음의 숫자들을 1~3개 빈 칸 띄워서 입력 하세요 : ")
        num = num.split()
        num = list(map(int, num))
        c = len(num)
        if c == 2:
            if num[c-1] - num[c-2] != 1:   
                print("순서가 맞지 않습니다. 다시 입력 하시오.")
            else:
                break
        elif c == 3:
            if num[c - 1] - num[c - 2] != 1 or num[c - 2] - num[c - 3] != 1:   
                print("순서가 맞지 않습니다. 다시 입력 하시오.")
            else:
                break
        elif bes+1 != num[0]:    
            print("시작 값이 맞지 않습니다. 다시 입력 하시오.")

        elif len(num) > 3:    
            print("개수가 맞지 입니다. 다시 입력 하시오.")
        else:
            break

    c = -len(num) + 4

    print("User : ", end='')    # 사람 입력값 출력
    for j in range(len(num)):
        bes += 1
        print(bes, end=" ")

    print("\ncomputer : ", end='')      # 컴퓨터 입력값 출력
    for n in range(c):
        bes += 1
        print(bes, end=" ")

    if bes == 30:
        while True:
            a = input("\n31을 입력 하시오 : ")
            if a == '31':
                break
            else:
                print("31을 입력 하시오 : ")
        break

print("당신의 패배 입니다.")

2022/06/29 12:00

우동훈

print("*"*50 + """\n지금부터 배스킨라빈스31 게임을 시작합니다.

게임 규칙:
1부터 31까지의 수를 순서대로 말합니다.
한번에 1개부터 3개까지의 수를 연달아 부를 수 있으며,
마지막으로 31을 말하는 사람이 집니다.
숫자 여러개를 연달아 입력하려면 ','(콤마)를 이용하면 됩니다.

그럼 저부터 시작!\n""" + "*"*50)

print("COM: 1, 2")
n = 2

while True:
    ui = list(map(int, input("YOU: ").split(',')))
    com = [ x for x in range(ui[-1]+1, ((4*n-2)+1)) ]
    print("COM:", str(com)[1:-1])
    n += 1
    if com[-1] == 30:
        print("YOU LOSE! COM WIN! ><")
        break

재미를 위해 첫번째 턴에서 컴퓨터가 말하는 숫자 개수를 랜덤으로 지정하고 싶었는데 그 경우에 컴퓨터가 무조건 이기는 방법이 떠오르지 않네요 ㅠ 아쉽지만 우선 이렇게만

2022/07/13 21:45

Estelle L


import java.util.Scanner; // 플레이어 입력을 위한 스캐너 임포트

public class BR31Game {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 스캐너 객체 선언
        int num = 1; // 게임 시작 숫자는 1
        System.out.println("배스킨라빈스31게임입니다."); // 안내메시지
        System.out.println(
                "규칙: 게임의 참여자들은 차례를 정해 1부터 31까지의 수를 순차적으로 부른다.\n한번에 1~3개까지 수를 연달아 부를 수 있으며, 마지막 31을 부른 사람이 진다.");
        // 규칙 안내 메시지
        System.out.println("컴퓨터가 먼저 시작합니다."); // 안내메시지
        while (true) { // 조건에 따라 탈출하도록 함.
            int select = 0; // 플레이어 선택 입력을 담을 변수 선언 및 초기화

            if (num == 32) { // 만약 게임숫자가 32에 도달하면
                break; // 그대로 탈출함.
            }

            if (num % 4 <= 2) { // 게임숫자를 4로 나눴을 때 나머지가 2일때까지
                System.out.println("Com: \t" + num++); // 컴퓨터가 숫자를 부름.
                continue; // 다시 while문으로 돌아감.
            } else { // 만약 위 조건이 아니라면
                int times = 0; // 플레이어가 자기차례에 숫자를 부른 횟수를 담을 변수 선언 및 초기화
                while (times != 3) { // 플레이어가 숫자를 부른 횟수가 3회가 될 때까지 반복(플레이어선택-while문)

                    if (num == 32) { // 만약 게임숫자가 32에 도달하면
                        break; // 플레이어는 숫자를 부를 수 없고 플레이어선택-while문을 탈출함.
                    }
                    System.out.println("현재 턴에 숫자를 부른 횟수 :" + times);
                    System.out.print("1. 다음숫자 부르기\n2. 순서 넘기기\n입력 >> "); // 선택안내메시지
                    select = Integer.parseInt(sc.next()); // 플레이어입력을 받음
                    if (select == 1) { // 1.다음숫자 부르기 선택시
                        times++; // 플레이어가 숫자를 부른 횟수를 1 증가시키고
                        System.out.println("Player :" + num++); // 게임숫자를 부름.
                    } else if (select == 2 && times == 0) { // 순서를 넘기려는데 해당 차례에 숫자를 부른 적이 없다면
                        System.err.println("숫자를 한 번 이상 불러야 합니다."); // 오류/안내메시지 출력
                        continue; // 선택안내메시지로 이동
                    } else if (select == 2 && times >= 1) { // 순서를 넘기려는데 숫자를 한 번 이상 불렀다면
                        break; // 플레이어선택-while문을 탈출함.
                    } else { // 1과 2 외의 것을 입력한 경우
                        continue; // 선택안내메시지로 돌아감.
                    } // 플레이어 선택 if~else문 종료

                } // while문 종료

            } // 컴퓨터~플레이어 if~else문 종료

        } // while문 종료
        System.out.println("컴퓨터가 이겼습니다!"); // 컴퓨터가 이길 수밖에 없는 게임.
    } // 메인메서드 종료
}

2022/08/01 17:22

Miracle Lee

# 4n-2 ==> key point
n=1
my_start_number = 1
my_end_number = 1
user_numbers_list_int = []
user_end_number = 0
while user_end_number < 31 :
    user_numbers_list_int = []
    my_end_number = 4 * n - 2
    for i in range(my_start_number, my_end_number + 1) :
        print(i, end=' ')

    print()
    user_numbers = input("input your number until 3: ")
    user_numbers_list = user_numbers.split()
    #print(user_numbers_list)
    for i in user_numbers_list :
        #print("i: ", i)
        user_numbers_list_int.append(int(i))

    print(user_numbers_list_int)
    user_end_number = user_numbers_list_int[-1]
    #print('user_end_number: ', user_end_number)
    my_start_number = user_end_number + 1
    n += 1

print("I win. You lost ㅋ") 

2023/02/05 13:40

제작자

print('게임을 시작합니다')
s = 0
p = []
while s < 31:
    left = 31 - s
    print('컴퓨터 :', end=' ')
    for _ in range(left % 4):
        s += 1
        if s == 31:
            s -= 1
            break
        print( s, end=' ')

    if s == 31:
        print('컴퓨터가 졌습니다.')
        break
    print()
    isGo = False
    while not isGo:
        isGo = True
        p = input("숫자를 입력 하세요: ").split()
        if int(p[0]) != s + 1:
            print('숫자 {}부터 쓰세요!'.format(s+1))
            isGo = False
        elif len(p) > 3:
            print('숫자 3개까지 만 쓸수 있어요')
            isGo = False
        elif s + len(p) != int(p[-1]):
            print('차례대로 숫자를 쓰세요')
            isGo = False
    s = int(p[-1])
    if s == 31:
        print(' =' * 10)
        print('컴퓨터가 이겼습니다.')

2023/07/15 13:27

insperChoi

print('게임을 시작합니다')
s = 0
p = []
while s < 31:
    left = 31 - s
    print('컴퓨터 :', end=' ')
    for _ in range(left % 4):
        s += 1
        if s == 31:
            s -= 1
            break
        print( s, end=' ')
    print()

    isGo = False
    while not isGo:
        isGo = True
        p = input("숫자를 입력 하세요: ").split()
        if int(p[0]) != s + 1:
            print('숫자 {}부터 쓰세요!'.format(s+1))
            isGo = False
        elif len(p) > 3:
            print('숫자 3개까지 만 쓸수 있어요')
            isGo = False
        elif s + len(p) != int(p[-1]):
            print('차례대로 숫자를 쓰세요')
            isGo = False
    s = int(p[-1])
    if s == 31:
        print(' =' * 10)
        print('컴퓨터가 이겼습니다.')
    if s == 30:
        print(' =' * 10)
        print('컴퓨터가 졌습니다.')
        break

2023/07/15 13:31

insperChoi

### 지는 숫자 = [3, 7, 11, 15, 19, 23, 27, 31] : 4n - 2
### 자동 게임
from random import randrange
def myCall(comCall):
    for i in range(1, 4):
        myNum = comCall + i
        if myNum % 4 == 3:
            print(f"You: {myNum}")
            return myNum
    myNum = comCall + randrange(1, 4)
    print(f"You: {myNum}")
    return myNum

comCall = randrange(1, 4) ### 컴이 3부터 계속 지는 수를 말하면 실패
print(f"Com: {comCall}")
while comCall < 30:
    myNum = myCall(comCall)
    if myNum == 31:
        print('Human lost')
        break
    randNum = randrange(1, 4)
    comCall = myNum + randNum
    print(f"Com: {comCall}")

##-------------------------
### 수동 게임: 사람이 지는 숫자 = [3, 7, 11, 15, 19, 23, 27, 31]를 입력해야 함.
### from random import randrange
### def myCall(comCall):
###     myNums = list(map(int, input(f"Com {comCall}, You: ", ).split()))
###     myNum = myNums[-1]
###     return myNum

2023/08/01 11:05

Hawk Lee

목록으로