lehrkraefte:blc:math:oxocard

Programmieren der Oxocard in TigerJython

oxocolors.py
from oxocard import *
from random import randint
 
num = 3
 
points = [[randint(0,7), randint(0,7)] for i in range(num)]
vecs = [[0.005*randint(20,100), 0.005*randint(20,100)] for i in range(num)]
 
 
def glocke(p1,p2):
    d2 = (p1[0]-p2[0])**2+(p1[1]-p2[1])**2
    return int(255.0/(1.0+d2/5))
 
 
enableRepaint(False)
while True:
    for i in range(8):
        for k in range(8):
            rgb = [glocke(points[c],[i,k]) for c in range(3)]
            dot(i, k, rgb)
    for c in range(num):
        for i in range(2):
            points[c][i]+=vecs[c][i]
            if (points[c][i]<-2 or points[c][i]>10):
                vecs[c][i]=-vecs[c][i]
                points[c][i]+=vecs[c][i]
 
    repaint()
accelerodemo.py
from oxocard import *
from random import randint
from oxoaccelerometer import *
 
 
acc = Accelerometer.create()
 
num = 12
 
points = [[randint(0,7), randint(0,7)] for i in range(num)]
colors = []
for i in range(num):
    colors.append([randint(50,255),randint(50,255),randint(50,255)])
 
grid = [[False for i in range(8)] for j in range(8)]
 
for p in points:
    grid[p[0]][p[1]]=True
 
 
def getDir(p):
    if p<1:
        return -1
    if p>2:
        return 1
    return 0
 
 
def onGrid(p):
    return p[0]>=0 and p[0]<=7 and p[1]>=0 and p[1]<=7
 
def add(p,v):
    return [p[0]+v[0],p[1]+v[1]]
 
enableRepaint(False)
while True:
    clear()
    pref = [acc.getX()/4.0, -acc.getY()/4.0]  # preferred direction of movement
    for i in range(num):
        p = points[i]
        v = [getDir(randint(0,300)/100.0+pref[k]) for k in range(2)]
        r = add(p,v)
        if onGrid(r):
            if grid[r[0]][r[1]]==False:
                grid[r[0]][r[1]]=True
                grid[p[0]][p[1]]=False
                p[0]=r[0]
                p[1]=r[1]
        dot(p[0],p[1],colors[i])
 
 
    repaint()
  • lehrkraefte/blc/math/oxocard.txt
  • Last modified: 2019/04/05 10:08
  • by Ivo Blöchliger