# 5 x 5의 그리드에서 한 군데에 타겟(Battle ship)이 숨어있고
4회 안에 Battleship을 찾지 못하면 missed로 게임이 끝나는 게임을 제작해보겠습니다.
Row : 줄 , Col : 열을 입력해서 체킹하는 방식을 쓸 것입니다.
problem1)
'board'라는 변수를 만들고 빈 리스트를 할당해주세요
board=[]
#우리는 초기화면이 다음과 같이 5X5 그리드로 보이게 하고 체킹하면 O가 X표시가 되는 방식을 이용할 겁니다
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
★problem2) 5x5 그리드를 “O"로 채워보는 방식을 씁시다
board 안은 다음과 같이 채워지도록 할 겁니다.
[['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O']]
1. range() 구문을 통해 5회 반복합니다 hint: for 문과 range 를 동시에 쓰면 됩니다.
2. .append() 구문을 이용해 5개의 리스트가 만들어지도록 합시다. 여기서 O는 알파벳이고 숫자가 아닙니다.
board = []
for i in range(5):
board.append(['O'] * 5)
print board
"""[['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O']]"""
★problem3)
board_in 이라는 매개변수를 가지는 print_board 함수를 정의합니다.
for문을 통해 board의 row를 접근해 출력하는 함수를 만들어 냅니다. -> for row in board:
print_board(board)를 통해 제대로 작성되었는지 확인해봅시다.
board = []
for i in range(5):
board.append(['O'] * 5)
def print_board(board_in):
for row in board:
print row
print_board(board)
"""
['O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O']
['O', 'O', 'O', 'O', 'O']"""
#아직은 ‘O','O','O','O','O' 로 출력이되고 있습니다. 이것들을 예쁘게 출력하려면 어떻게 해야할까요?
letters = ['a', 'b', 'c', 'd']
print " ".join(letters)
print "---".join(letters)
위의 문장을 사용하면 결합 되는 방식을 조절 할 수 있습니다.
★problem4)
for 반복문 안에 “ ”과 .join을 이용해 각각의 행의 연결이 자연스럽게 해봅시다
board = []
for i in range(5):
board.append(['O'] * 5)
def print_board(board_in):
for row in board:
print " ".join(row)
print_board(board)
"""
O O O O O
O O O O O
O O O O O
O O O O O
O O O O O"""
#이제 배틀쉽을 숨겨볼 때가 왔습니다
from random import randint
coin = randint(0, 1)
dice = randint(1, 6)
coin 에 0~1까지의 정수중 하나가 랜덤하게 들어간다
dice 에 1~6까지의 정수중 하나가 랜덤하게 들어간다는 뜻입니다
problem5)
random_row, random_col 이라는 함수를 정의하고 그 함수는 각각은 행과 열의 범위 안에서의 랜덤 정수를 반환하는 형식 randint(0, len(board_in) - 1)을 반환하기만 하면 됩니다.(매개변수는 board 만들어가면 되겠죠)
board = []
for i in range(5):
board.append(['O'] * 5)
def print_board(board_in):
for row in board:
print " ".join(row)
from random import randint
def random_row(board):
return randint(0,len(board)-1)
def random_col(board):
return randint(0,len(board)-1)
random_row(board)
random_col(board)
print_board(board)
#number = raw_input("Enter a number: ") # 숫자입력
if int(number) == 0: # 입력한 숫자를 정수로 변환
print "You entered 0“
problem6)
guess_row,guess_col 이라는 변수를 만들고,
사용자가 입력해서 배틀쉽이 있을거라 생각되는 행,열이 저장되게 해봅시다.
int(raw_input("Guess Row: "))
int(raw_input("Guess Col: "))
이걸 이용하면 되겠죠?
board = []
for i in range(5):
board.append(['O'] * 5)
def print_board(board_in):
for row in board:
print " ".join(row)
from random import randint
def random_row(board):
return randint(0,len(board)-1)
def random_col(board):
return randint(0,len(board)-1)
random_row(board)
random_col(board)
guess_row = int(raw_input("Guess Row: "))
guess_col = int(raw_input("Guess Col: "))
problem7) 컴퓨터가 만들어낸 랜덤 행,렬, 숨겨놓은 배틀쉽의 위치를 먼저 알 수 있도록 해봅시다. 이는 우리가 제대로 코드를 작성했는지 안했는지를 계속 체킹하면서코드를 작성하기 위함입니다.
ship_row, ship_col을 출력하고 그 다음에 guess_row, guess_col을 입력을 받도록 진행해주세요
from random import randint
board = []
for x in range(0, 5):
board.append(["O"] * 5)
def print_board(board):
for row in board:
print " ".join(row)
def random_row(board):
return randint(0, len(board) - 1)
def random_col(board):
return randint(0, len(board[0]) - 1)
ship_row = random_row(board)
ship_col = random_col(board)
# Add your code below!
print ship_row
print ship_col
guess_row = int(raw_input("Guess Row: "))
guess_col = int(raw_input("Guess Col: "))
problem8) 만약에 컴퓨터가 만든 임의의 배틀쉽의 위치와 사용자가 입력한 값이 같으면
"Congratulations! You sank my battleship!"
이 출력 되도록 합시다
guess row와 ship,row가 같고 guess_col 과 ship_col 이 같은 조건이라고 하면 되겠죠?
from random import randint
board = []
for x in range(0, 5):
board.append(["O"] * 5)
def print_board(board):
for row in board:
print " ".join(row)
def random_row(board):
return randint(0, len(board) - 1)
def random_col(board):
return randint(0, len(board[0]) - 1)
ship_row = random_row(board)
ship_col = random_col(board)
# Add your code below!
print ship_row
print ship_col
guess_row = int(raw_input("Guess Row: "))
guess_col = int(raw_input("Guess Col: "))
if guess_row==ship_row and guess_col==ship_col:
print "Congratulations! You sank my battleship!"
#print board[2][3]#2차원의 행렬의 경우에는 2번재 행에 3번째 열의 값을 출력하겠다.
problem9) else구문을 이용해서 틀렸을 경우에는 "You missed my battleship!"이라고 표기하고 추정한 곳 guess_row,guess_coll의 위치의 값은 O에서 X로 변경해봅시다.
from random import randint
board = []
for x in range(0, 5):
board.append(["O"] * 5)
def print_board(board):
for row in board:
print " ".join(row)
def random_row(board):
return randint(0, len(board) - 1)
def random_col(board):
return randint(0, len(board[0]) - 1)
ship_row = random_row(board)
ship_col = random_col(board)
# Add your code below!
print ship_row
print ship_col
guess_row = int(raw_input("Guess Row: "))
guess_col = int(raw_input("Guess Col: "))
if guess_row==ship_row and guess_col==ship_col:
print "Congratulations! You sank my battleship!"
else:
print "You missed my battleship!"
board[guess_row][guess_col] = "X"
print_board(board)
"""
1
3
Guess Row: 3
Guess Col: 3
You missed my battleship!
O O O O O
O O O O O
O O O O O
O O O X O
O O O O O"""
#최종+ 3회 한도두기
from random import randint
board = []
for x in range(0, 5):
board.append(["O"] * 5)
def print_board(board):
for row in board:
print " ".join(row)
print_board(board)
def random_row(board):
return randint(0, len(board) - 1)
def random_col(board):
return randint(0, len(board[0]) - 1)
ship_row = random_row(board)
ship_col = random_col(board)
print ship_row
print ship_col
for turn in range(4):
print "Turn", turn + 1
guess_row = int(raw_input("Guess Row: "))
guess_col = int(raw_input("Guess Col: "))
if guess_row == ship_row and guess_col == ship_col:
print "Congratulations! You sank my battleship!"
break
else:
if guess_row not in range(5) or \
guess_col not in range(5):
print "Oops, that's not even in the ocean."
elif board[guess_row][guess_col] == "X":
print( "You guessed that one already." )
else:
print "You missed my battleship!"
board[guess_row][guess_col] = "X"
if (turn == 3):
print "Game Over"
print_board(board)
'컴퓨터 언어 > python' 카테고리의 다른 글
Python 10. Class (0) | 2020.07.20 |
---|---|
파이썬 기초 4 (0) | 2020.07.15 |
Python 7. LOOP (0) | 2020.07.15 |
파이썬 기초1 (0) | 2020.07.15 |
Python 5: List + Dictinaray + for루프 (0) | 2020.07.14 |