Python Forum
Can't change Right to left id spawning/ movement to top to bottom - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Can't change Right to left id spawning/ movement to top to bottom (/thread-6125.html)



Can't change Right to left id spawning/ movement to top to bottom - Kingrocket10 - Nov-07-2017

Ive been trying to change the way my yblocks in my game move, they go (right to left) at this point but I want them to move (top to bottom) but I can't figure out how, please help me change this code so the yblocks flow or move from (top to bottom) name of block id:(yblock) my code (so far):

from tkinter import *
from random import randint
from time import sleep, time
from math import sqrt

HEIGHT = 1000
WIDTH = 900

window = Tk()
window.title('Strange Game')
c = Canvas(window, width=WIDTH, height=HEIGHT, bg='black')
c.pack()

block_id = c.create_rectangle(0, 0, 40, 40, outline='red', fill='red')
BLOCK_R = 15
MID_X = WIDTH / 2
MID_Y = HEIGHT / 2
c.move(block_id, MID_X, MID_Y)

BLOCK_SPD = 15

yblock_id = list()
yblock_r = list()
yblock_speed = list()
MIN_YBLOCK_R = 5
MAX_YBLOCK_R = 10
MAX_YBLOCK_SPD = 2
GAP = 100

YBLOCK_CHANCE = 100

def move_block(event):
if event.keysym == 'Up':
c.move(block_id, 0, -BLOCK_SPD)
elif event.keysym == 'Down':
c.move(block_id, 0, BLOCK_SPD)
elif event.keysym == 'Left':
c.move(block_id, -BLOCK_SPD, 0)
elif event.keysym == 'Right':
c.move(block_id, BLOCK_SPD, 0)
c.bind_all('<Key>', move_block)

def create_yblock():
x = WIDTH + GAP
y = randint(0, HEIGHT)
r = randint(MIN_YBLOCK_R, MAX_YBLOCK_R)
id1 = c.create_rectangle(x - r, y - r, x + r, y + r, outline='yellow')
yblock_id.append(id1)
yblock_r.append®
yblock_speed.append(randint(1, MAX_YBLOCK_SPD))

def move_yblocks():
for i in range(len(yblock_id)):
c.move(yblock_id[i], -yblock_speed[i], 0)

def get_coords(id_num):
pos = c.coords(id_num)
x = (pos[0] + pos[2])/2
y = (pos[1] + pos[3])/2
return x, y

def del_yblock(i):
del yblock_r[i]
del yblock_speed[i]
c.delete(yblock_id[i])
del yblock_id[i]

def distance(id1, id2):
x1, y1 = get_coords(id1)
x2, y2 = get_coords(id2)
return sqrt((x2 - x1)**2 + (y2 - y1)**2)

def clean_up_yblocks():
for i in range(len(yblock_id)-1, -1, -1):
x, y = get_coords(yblock_id[i])
if x < -GAP:
del_yblock(i)


#MAIN GAME LOOP
while True:
if randint(1, YBLOCK_CHANCE) == 1:
create_yblock()
move_yblocks()
window.update()
sleep(0.01)


RE: Can't change Right to left id spawning/ movement to top to bottom - heiner55 - Nov-07-2017

def create_yblock():
   #x = WIDTH + GAP
    x = randint(0, WIDTH)
    ...

def move_yblocks():
    for i in range(len(yblock_id)):
       #c.move(yblock_id[i], -yblock_speed[i], 0)
        c.move(yblock_id[i], 0, yblock_speed[i])



RE: Can't change Right to left id spawning/ movement to top to bottom - nilamo - Dec-14-2017

Is there a reason you're using tk for a game?  Eventually, you're going to find something that it simply cannot handle, so why not use a library that was designed for games, like http://pygame.org/news ?


RE: Can't change Right to left id spawning/ movement to top to bottom - Larz60+ - Dec-14-2017

Quote:Eventually, you're going to find something that it simply cannot handle
I'd change Eventually to Soon