Python Forum
Usborne Coding for Beginners using Python 'Dodge the Bombs' Syntax Error
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Usborne Coding for Beginners using Python 'Dodge the Bombs' Syntax Error
#6
Blank lines between functions make code a lot easier to read.
import tkinter
import random

gameOver = False
score = 0
squaresToClear = 0
bombfield = []

def play_bombdodger():
    create_bombfield(bombfield)
    window=tkinter.Tk()
    layout_window(window)
    window.mainloop()

def create_bombfield(bombfield):
    global squaresToClear
    for row in range(0,10):
        rowList=[]
        for column in range(0,10):
            if random.randint(1,100) < 20:
                rowList.append(1)
            else:
                rowList.append(0)
                squaresToClear = squaresToClear + 1
        bombfield.append(rowList)
    printfield(bombfield)
    
def printfield(bombfield):
    for rowList in bombfield:
        print(rowList)
        
def layout_window(window):
    for rowNumber, rowList in enumerate (bombfield):
        for columnNumber, columnEntry in enumerate (rowList):
            if random.randint(1,100)<25:
                square=tkinter.Label(window, text="    ",bg= "darkgreen")
            elif random.randint(1,100)>75:
                square=tkinter.Label(window, text= "    ", bg = "seagreen")
            else:
                square = tkinter.Label(window,text="    ", bg="green")
            square.grid(row=rowNumber, column=columnNumber)  # Typo here
            square.bind("<Button-1>", on_click)  #capital "B"utton

def on_click(event):
    global score
    global gameOver
    global squaresToClear
    square = event.widget
    row = int(square.grid_info()["row"])
    column =int(square.grid_info()["column"])
    currentText=square.cget("text")
    if gameOver==False:
        if bombfield[row][column]==1:
            gameOver=True
            square.config(bg="red")
            print("Game Over! You hit a bomb!")
            print("Your score was:", score)
        elif currentText=="    ":
            square.config(bg="brown")
            totalBombs=0
            if row<9:
                if bombfield[row+1][column]==1:
                    totalBombs=totalBombs+1
            if row>0:
                if bombfield[row-1][column]==1:
                    totalBombs=totalBombs+1
            if column>0:
                if bombfield[row][column-1]==1:
                    totalBombs=totalBombs+1
            if column <9:
                if bombfield[row][column+1]==1:
                    totalBombs=totalBombs+1
            if row>0 and column>0:
                if bombfield[row-1][column-1]==1:
                    totalBombs=totalBombs+1
            if row<9 and column>0:
                if bombfield[row+1][column-1]==1:
                    totalBombs=totalBombs+1
            if row >0 and column <9:
                if bombfield[row-1][column+1]==1:
                    totalBombs=totalBombs+1
            if row <9 and column <9:
                if bombfield[row+1][column+1]==1:
                    totalBombs=totalBombs+1
            square.config(text = " " + str(totalBombs) + " ")
            squaresToClear = squaresToClear - 1
            score = score + 1
            if squaresToClear == 0:
                gameOver = True
                print("Well done! You found all the safe squares!")
                print("You score was:", score)

play_bombdodger()
Reply


Messages In This Thread
RE: Usborne Coding for Beginners using Python 'Dodge the Bombs' Syntax Error - by deanhystad - Jun-18-2020, 09:41 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Database Submit Entry Syntax Error Melford 27 8,270 Jan-27-2020, 04:20 PM
Last Post: Denni

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020