Skip to content
Menu
Daniel J. Pierce
  • C#
  • Games
  • Graphics
  • Math
  • Python
  • Tynker
  • Unity
Daniel J. Pierce

Four Dots

Posted on September 3, 2019November 11, 2019

Restart Game

Use left, right arrow to move left, right.

Press down to drop a dot.

Made in tynker.com, the Python 1 course, not cross-platform compatible but source code is below

import turtle

screen = turtle.Screen()
screen.delay(0)

chip = turtle.Turtle()
chip.shape("circle")
chip.color("green")
chip.penup()
chip.speed(0)

connect = []
CHIP_DIST = 30 # the distance each chip will be apart
ORIGIN_X = -90
ORIGIN_Y = -100
RIGHTMOST_COL = ORIGIN_X + CHIP_DIST * 6

for i in range(7) :
    connect.append([])
    x = connect[i]
    for j in range(7) : 
        x.append(0)
        chip.goto(ORIGIN_X + i * CHIP_DIST, ORIGIN_Y + j * CHIP_DIST)
        chip.stamp()
               
chip.color("blue")
chip.goto(ORIGIN_X + 3 * CHIP_DIST, ORIGIN_Y + 7 * CHIP_DIST)

running = True
def r() :
    if running :
        x = chip.xcor()
        if x < RIGHTMOST_COL : 
            chip.setx(x + CHIP_DIST)
        else :
            chip.setx(ORIGIN_X)
                        
def l() :
    if running :
        x = chip.xcor()
        if x > ORIGIN_X : 
            chip.setx(x - CHIP_DIST)
        else : 
            chip.setx(RIGHTMOST_COL)
                                                
turn = 1 
def checkrow(x, y):
    count = 1
    for i in range(1, 4):
        if x + i > -1 and connect[x+i][y] == turn:
            count += 1
        else:
            break
    for i in range(1, 4):
        if x - i> -1 and connect[x - i][y] == turn:
            count += 1
        else:
            break
    if count >= 4:
        return True
    return False
def checkcolumn(x, y):
    count = 1
    for i in range(1, 4):
        if y + i < 7 and connect[x][y + i] == turn:
            count += 1
        else:
            break
        for i in range(1, 4):
            if y - i > -1 and connect[x][y - i] == turn:
                count += 1
            else:
                break
        if count >= 4:
            return True
        return False
def haswinner(x, y):
    return checkrow(x,  y) or checkcolumn(x, y)
def d() :
    global turn, running
    if running :
        x = int((chip.xcor() - ORIGIN_X) / CHIP_DIST)
        col = connect[x]
        for y in range(len(col)) :
            if(col[y] == 0) :
                chip.sety(ORIGIN_Y + y * CHIP_DIST)
                chip.stamp()
                chip.goto(ORIGIN_X + 3 * CHIP_DIST, ORIGIN_Y + 7 * CHIP_DIST)
                connect[x][y] = turn
                if haswinner(x, y):
                    running = False
                    print("Player " + str(turn) + " is the winner!")
                elif turn == 1 : 
                    turn = 2
                    chip.color("red")
                else : 
                    turn = 1
                    chip.color("blue")
                break
                       
screen.onkey(r, "Right")
screen.onkey(l, "Left")
screen.onkey(d, "Down")
screen.listen()

Projects

  • Particle Simulator
  • AP Computer Science Paint Program
  • Maybe Good Platformer
  • Custom Gravity Test
  • Triangle Types
  • Unity Obstacle Course v1
  • Collapsing rows
  • Java Tic Tac Toe (No AI)
  • Mersenne Prime Tester
  • Rainbow
  • Pong
  • Simple Tkinter Calculator
  • Hexidecimal Converter
  • Snake eats apple
  • Protect the Galactic Empire
  • Hangman
  • Beautiful Colorful Thing
  • Four Dots
  • Frogga
  • Escape asteroids
  • Portals
  • Guess the Number 2.0
  • Illogical
  • Tic Tac Toe
  • Guess the Number
  • Ultimate Calculator 1.0.0a0
  • Prime Number Tester
  • Number Base Converter 2.0a0
  • Number Base Converter 1.1
  • Python Equation Calculator
©2026 Daniel J. Pierce | WordPress Theme by Superb WordPress Themes