게임규칙
게임의 참여자들은 차례를 정해 1부터 31까지의 수를 순차적으로 부른다. 한번에 1~3개까지 수를 연달아 부를 수 있으며, 마지막 31을 부른 사람이 진다.
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("졌습니다..")
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! 내가졌네요.")
술마실때 즐거움을 줬던 게임인데 이렇게 또 즐거움을 주네요
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개를 초과하는 숫자를 입력한다던가 범위 이외의 숫자를 입력할 때는 고려하지 않았습니다. 초등학생분이 이런 문제를 만드시다니 대단하신 것 같습니다.
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
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("약하구나??")
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()
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로 했습니다. (사실 어떻게 구현해야할지 몰라서...ㅎ)
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
#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;
}
어차피 질 놈 플레이어의 패배만 있게 두었습니다.
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();
}
}
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)
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
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')
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!')
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.
다시 도전할 수 있도록 만들어보았습니다
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
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
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
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]
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()
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());
}
}
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('당신이 졌습니다')
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();
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
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
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();
}
}
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 승리");
}
}
}
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("당신의 패배 입니다.")
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
재미를 위해 첫번째 턴에서 컴퓨터가 말하는 숫자 개수를 랜덤으로 지정하고 싶었는데 그 경우에 컴퓨터가 무조건 이기는 방법이 떠오르지 않네요 ㅠ 아쉽지만 우선 이렇게만
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("컴퓨터가 이겼습니다!"); // 컴퓨터가 이길 수밖에 없는 게임.
} // 메인메서드 종료
}
# 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 ㅋ")
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('컴퓨터가 이겼습니다.')
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
### 지는 숫자 = [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