Hi Hi try
Hi Hi try

Reputation: 39

Icebreaker Game python

I'm going to create a python game by using a modules called graphics. I have created a board with ice and I'm confusing how to create the position for the player in the beginning. link to the graphics modules: http://mcsp.wartburg.edu/zelle/python/graphics.py Here is my code:

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]])        

position in the beginningMS1()

let's say 'X' is the red circle and 'O' is the blue circle.

Upvotes: 0

Views: 1423

Answers (1)

cdlane
cdlane

Reputation: 41872

I don't know anything about the Icebreaker game but I'm hoping the additional logic I provided you below gives you enough to move forward:

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()

enter image description here

Upvotes: 1

Related Questions