首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >做简单的战舰游戏

问做简单的战舰游戏
EN

Stack Overflow用户
提问于 2015-03-04 22:32:56
回答 1查看 1.1K关注 0票数 0

我正在尝试实现一个简单的战舰游戏。这是一个单人游戏对电脑。到目前为止,我只能输入我的船的位置,而不是我的程序中断lol。

我试图为计算机生成随机坐标,但我无法找到将它们放置在一起的逻辑(垂直的或水平的)而不重叠它们。

我仍然需要条件的沉船和当游戏结束,但我不知道如何去做。我最好的(也是唯一的)过程是遍历每一个玩家和电脑的元素(计算机和播放器的点击率),并计算棋盘上是否有5 'A‘、3 'C’和2 'D‘。如果有,那么那个玩家就赢了。

代码语言:javascript
复制
from random import random, randrange

def emptyBoard():
    empBoard = [ ['*','*','*','*','*','*','*'],
             ['*','*','*','*','*','*','*'],
             ['*','*','*','*','*','*','*'],
             ['*','*','*','*','*','*','*'],
             ['*','*','*','*','*','*','*'],
             ['*','*','*','*','*','*','*'],
             ['*','*','*','*','*','*','*']]
    return empBoard

def placeMyShips(myBoard):

    for a in range(5):
        x,y = eval(input('Enter coordinate of Aircarrier: '))
        myBoard [x][y] = 'A' 

    for c in range(3):
        x1,y1 = eval(input('Enter coordinate of Cruiser: '))
        myBoard [x1][y1] = 'C'
    for d in range(2):
        x2,y2 = eval(input('Enter coordinate of Destroyer: '))
        myBoard [x2][y2] = 'D'

    print ('\tMy Fleet')
    for i in myBoard:
        print (i)

    return myBoard

def placeCompShips(compBoard):

    for a in range (5):
        x= randrange(0,5)
        y= x+1      
        compBoard[x][y]= 'A'

    for c in range (3):
        x1= randrange(0,5)
        y1= x1+1
        if compBoard [x1][y1] == '*':
            compBoard[x1][y1]= 'C'            

    for d in range (2):
        x2= randrange(0,5)
        y2= x2+1
        if compBoard [x2][y2] =='*':
        compBoard[x2][y2] = 'D'

    return compBoard

def myMoves(compBoard,myHitBoard):  
    x,y = eval(input('Enter your move as coordinate: '))
    if compBoard[x][y] == 'A':
        myHitBoard[x][y] =='A'
        print('Computer: You hit my Aircarrier')

    elif compBoard [x][y] == 'C':
        myHitBoard[x][y] =='C'
        print('Computer: You hit my Cruiser')

    elif compBoard [x][y] == 'D':
        myHitBoard[x][y] =='D'
        print('Computer: You hit my Destroyer')

    else:
        myHitBoard [x][y] = 'M'
        print('Computer: Shot was a miss')

    print ('My hits on the computer')
    for i in myHitBoard:
        print (i)

    return myHitBoard

def compMoves(myBoard,compHitBoard):

    x,y = eval(input('Enter your move as coordinate '))
    if myBoard[x][y] == 'A':          
        compHitBoard [x][y] = 'A'
        print('Player: You hit my Aircarrier')
    elif myBoard [x][y] == 'C':
        compHitBoard[x][y] =='C'
        print('Player: You hit my Cruiser')
    elif myBoard [x][y] == 'D':
        compHitBoard[x][y] =='D'
        print('Player: You hit my Destroyer')
    else:
        compHitBoard [x][y] = 'M'
        print('Player: Shot was a miss')
    return compHitBoard


def intro():
    print('BATTLESHIP')
    print('This is a one player game versus the computer')

def main():
    intro()

    placeMyShips(emptyBoard())
    placeCompShips(emptyBoard())

main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-05 00:08:39

我认为这个问题不太可能得到一个很好的答案,因为它的广度,但是我认为你试图用你的参数问题做的事情更像是:

代码语言:javascript
复制
def main():
    intro()

    my_board = placeMyShips(emptyBoard())
    my_hit_board = emptyBoard()
    comp_board = placeCompShips(emptyBoard())
    comp_hit_board = emptyBoard()

    myMoves(comp_board, my_hit_board)

还请注意我的变量名。函数不应该使用mixedCase名称,除非它已经在该项目中建立(例如,这个新项目和其他每个项目都应该按照PEP8使用PEP8)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28866424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档