Kasper Bielecki

From the class Code Toolkit Python · Fall 2021

Multiplayer Squares

Week 13

networked_example/networked_example.pyde

import json

from week11_network import *
 
myCreature = {}
# add your name - must be unique among everyone else in class
myCreature["name"] = "Kasper"
myCreature["x"] = 250
myCreature["y"] = 250
myCreature["color"] = color(0,50,50)
myCreature["size"] = 6

creatureList = []

def setup():
    size(500, 500)
    rectMode(CENTER)

def draw():
    global creatureList
    background(255)

    fill(myCreature["color"])
    rect(myCreature["x"],myCreature["y"],myCreature["size"],myCreature["size"])

    i = 0
    while i < len(creatureList):
        creature = creatureList[i]
        fill( creature["color"] )
        rect(creature["x"],creature["y"],creature["size"],creature["size"])
        i = i + 1
    
    creatureList = getData()
    sendData(myCreature)

def keyPressed():    
    if key == 'i':
        myCreature["y"] = myCreature["y"] - 2
    elif key == 'm':
        myCreature["y"] = myCreature["y"] + 2
    elif key == 'j':
        myCreature["x"] = myCreature["x"] - 2
    elif key == 'k':
        myCreature["x"] = myCreature["x"] + 2

networked_example/week13_networking.py

ip_address = "174.138.45.118"

def getData():
    global lastGet, creatureList
    # only fetch new data once per second
    if millis() > lastGet + 1000:
        creatureList = []
        lastGet = millis()
        response = urllib2.urlopen("http://"+ip_address+":5000/get")
        j = json.load(response)
        print(j)
        c = []
        for c in j:
            c["x"] = int(c["x"])
            c["y"] = int(c["y"])
            c["color"] = unhex(c["color"])
            c["size"] = int(c["size"])
            creatureList.append(c)

def sendData():
    global lastSend
    # only send once per second    
    if millis() > lastSend + 1000:
        lastSend = millis()
        variableString = "name=" + myCreature["name"]
        variableString += "&x=" + str(myCreature["x"])
        variableString += "&y=" + str(myCreature["y"])
        variableString += "&color=" + hex(myCreature["color"])
        variableString += "&size=" + str(myCreature["size"])
        returnValue = loadStrings("http://"+ip_address++":5000/move?" + variableString)