0

我将使用一个名为 graphics 的模块来创建一个 python 游戏。我用冰创建了一个棋盘,但我很困惑如何在一开始就为玩家创建位置。链接到图形模块: http: //mcsp.wartburg.edu/zelle/python/graphics.py 这是我的代码:

from graphics import *
from random import *

column, row = 7, 10

WIN_W, WIN_H = 450, 315

WIN_SZ, GAP = 40, 5

COLORS = [ 'blue', 'white']

player = 'X'

win = None

ices = []

def draw_ice(x, y):
    global ices

    left = GAP + x* (WIN_SZ+GAP)
    top =  GAP + y* (WIN_SZ+GAP)
    r = Rectangle(Point(left, top), Point(left+WIN_SZ, top+WIN_SZ))
    ices[x][y].append(r)
    bit = randint(1,1)
    ices[x][y].append(bool(bit))
    ices[x][y][0].setFill(COLORS[bit])
    ices[x][y][0].draw(win)

def draw_ices():
    for i in range(row):
        ices.append([])
        for j in range(column):
            ices[i].append([])
        draw_ice(i, j)

def MS1():
    global win
    win = GraphWin("Icebreaker", WIN_W, WIN_H)
    draw_ices()
    while True:
        pt = win.getMouse()

        x = int((pt.x - GAP)/(WIN_SZ + GAP))
        y = int((pt.y - GAP)/(WIN_SZ + GAP))
        print(str((pt.x, pt.y)) + ' --> ' + str((x, y)))

        ices[x][y][1] = not ices[x][y][0]
        ices[x][y][0].setFill(COLORS[ices[x][y][1]])        

MS1()开头的位置

假设“X”是红色圆圈,“O”是蓝色圆圈。

4

1 回答 1

1

我对破冰船游戏一无所知,但我希望我在下面为您提供的附加逻辑足以让您继续前进:

from graphics import *

COLUMN, ROW = 7, 10

WIN_W, WIN_H = 455, 320

WIN_SZ, GAP = 40, 5

COLORS = ['blue', 'white']

CIRCLE, RECTANGLE, COLOR = range(3)

player = 'X'

ices = []

def draw_ice(x, y):
    left = GAP + x * (WIN_SZ + GAP)
    top = GAP + y * (WIN_SZ + GAP)
    r = Rectangle(Point(left, top), Point(left + WIN_SZ, top + WIN_SZ))
    c = Circle(r.getCenter(), WIN_SZ / 4)
    bit = 1
    c.setFill(COLORS[bit])
    c.setOutline('white')
    r.draw(win)
    c.draw(win)
    ices[x][y] = [c, r, bool(bit)]

def draw_ices():
    for i in range(ROW):
        ices.append([])
        for j in range(COLUMN):
            ices[i].append(None)
            draw_ice(i, j)

def MS1():
    draw_ices()

    x_player = ices[0][3][CIRCLE]  # X / Red Player
    x_player.setFill('red')

    o_player = ices[9][3][CIRCLE]  # O / Red Player
    o_player.setFill('blue')

    while True:
        pt = win.getMouse()

        x = int((pt.x - GAP) / (WIN_SZ + GAP))
        y = int((pt.y - GAP) / (WIN_SZ + GAP))
        print((pt.x, pt.y), '-->', (x, y))

        ices[x][y][COLOR] = not ices[x][y][COLOR]
        ices[x][y][CIRCLE].setFill(COLORS[ices[x][y][COLOR]])

win = GraphWin("Icebreaker", WIN_W, WIN_H)

MS1()

在此处输入图像描述

于 2017-05-19T07:03:16.347 回答