日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python学习笔记(5),Battleship 游戏

發(fā)布時(shí)間:2023/12/16 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python学习笔记(5),Battleship 游戏 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.建立“海洋”:一個(gè)5*5的網(wǎng)格,每個(gè)格子里面的元素均為‘O’,可以使用list來產(chǎn)生5個(gè)O, board=[] for item in range(5):board.append(['O']*5) print board
但是這樣顯示的結(jié)果是一行,并非我們想要的 5*5: [['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']]
可以使用for循環(huán)來換行: board=[] for item in range(5):board.append(['O']*5) def print_board(board):for row in board:print row print_board(board)

結(jié)果是已經(jīng)分行了:

['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']
但是這也是很不美觀,如果能把引號(hào)和方括號(hào)去掉就更好了,python可以使用 .join的方法:

letters = ['a', 'b', 'c', 'd']print " ".join(letters)
print
"---".join(letters) 可以分別打出 a b c d,以及 a---b---c---d

board=[] for item in range(5):board.append(['O']*5) def print_board(board):for row in board:print " ".join(row) print_board(board)結(jié)果明顯好了很多:

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

2. 藏戰(zhàn)艦,找戰(zhàn)艦:

from random import randintboard = []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) guess_row = int(raw_input("Guess Row:")) #input和rawinput有區(qū)別,兩者都是內(nèi)置函數(shù) guess_col = int(raw_input("Guess Col:"))print ship_row print ship_col# Write your code below! if guess_row==ship_row and guess_col==ship_col: #如果猜的和隨機(jī)給予的位置相同,則游戲成功print "Congratulations! You sank my battleship"else:if guess_row not in range(5) or \guess_col not in range(5): #如果猜的數(shù)字不在范圍內(nèi),則報(bào)錯(cuò)print "Oops, that's not even in the ocean."elif board[guess_row][guess_col]=='X': #如果猜過了,則報(bào)錯(cuò)print "You guessed that one already."else:print "You missed my battleship!"board[guess_row][guess_col]="X" #把一個(gè)list的某一個(gè)元素改成另一個(gè)元素,則利用list[i][j]來print_board(board)
3.最終,以及測(cè)試:

from random import randintboard = []for x in range(5):board.append(["O"] * 5)def print_board(board):for row in board:print " ".join(row)print "Let's play Battleship!" 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# Everything from here on should go in your for loop! # Be sure to indent four spaces! for Turn in range(4):print "Turn: "Turn+1 #由于range(4)是從0~3,因此第n輪需要顯示的是n+1guess_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 sunk my battleship!"break #如果贏了就退出else:if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):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"# Print (turn + 1) here!print_board(board)if Turn==3:print "Game Over" #game over放在所有錯(cuò)誤的這個(gè)else里面,因?yàn)槿绻谒拇芜€進(jìn)入錯(cuò)誤,則游戲輸了

4.可以根據(jù)需要把游戲變得復(fù)雜一點(diǎn),

比如增加一艘船,但是兩艘船的位置又不能重合;

有如將其變成兩個(gè)人的游戲;

又如將船的尺寸變大,此時(shí)要考慮船身其中一點(diǎn)在在海洋里,另一點(diǎn)又在海洋外;


總結(jié)

以上是生活随笔為你收集整理的Python学习笔记(5),Battleship 游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。