Ветвление, оператор if

Для того, чтобы получить анимацию, нужно несколько раз в секунду выводить новое изображение и удалять старое.
Круг, который движется вправо:

from tkinter import *

root = Tk()
root.geometry('600x600+100+100')
canv = Canvas(bg='white')
canv.pack(fill=BOTH,expand=1)


x = 100 
y = 300
r = 18

def update():
	global x
	x += 3
	canv.delete('ball')
	canv.create_oval(x-r,y-r,x+r,y+r,fill='orange', tag = 'ball')
	root.after(30,update)


update()
root.mainloop()

Сделаем так, чтобы круг остановился у правой границы:

from tkinter import *

root = Tk()
root.geometry('600x600+100+100')
canv = Canvas(bg='white')
canv.pack(fill=BOTH,expand=1)


x = 100 
y = 300
r = 18

def update():
	global x
	x += 3
	canv.delete('ball')
	canv.create_oval(x-r,y-r,x+r,y+r,fill='orange', tag = 'ball')
	if x < 550:
		root.after(30,update)


update()
root.mainloop()
1. Сделать круг, который движется от центра влево и останавливается у левой границы
2. Сделать круг, который движется от центра вверх и останавливается у верхней границы
3. Сделать круг, который движется от центра вправо-вниз (по диагонали) и останавливается в правом нижнем углу
4. Сделать круг, который горизонтально движется к правой границе и «отскакивает» от нее: меняет скорость на противоположную. И начинает двигаться в другую сторону
5. Сделать круг, который движется от левого края до правого и обратно, отражаясь от стен
6. Сделать круг, который движется по диагонали, отражаясь от всех стен

Теперь поохотимся за шариком.
По щелчку круг появляется в случайном месте:

from tkinter import *
from random import randrange as rnd

root = Tk()
root.geometry('600x600+100+100')
canv = Canvas(bg='white')
canv.pack(fill=BOTH,expand=1)



def click(event):
	canv.delete('ball')
	x = rnd(50,550)
	y = rnd(50,550)
	r = 25
	canv.create_oval(x-r,y-r,x+r,y+r,fill='orange', tag = 'ball')


canv.bind('<1>',click)
root.mainloop()

Для выполнения следующего задания вам понадобится определять расстояние между двумя точками. Сделать это можно с помощью функции (использована теорема Пифагора):

def distance(x1,y1,x2,y2):
	return ((x1-x2)**2+(y1-y2)**2)**0.5

Снимок экрана от 2016-01-05 19:32:16

7. Круг появляется в случайном месте после щелчка в круге. Если щелчок был вне круга — никаких изменений, круг остается на месте
8. Круг появляется в случайном месте на 3 секунды, после чего меняет своё положение. Использовать root.after(3000,update). По щелчку на круге — исчезает.
9. Написать программу «Поймай шарик»: круг появляется в случайном месте на 3 секунды, после чего меняет своё положение. По щелчку на круге — исчезает. Вести счет попаданий и промахов, отображать его на экране. Закончить после 10 кругов.
10. По щелчку нарисовать много кругов случайного цвета
11. По щелчку нарисовать много кругов случайного цвета, посчитать, сколько красных
12. По щелчку рисовать один круг в месте щелчка. Если круг выше середины окна, то закрасить красным, иначе — синим.
13. По щелчку рисовать один круг в месте щелчка. Если круг левее середины окна, то закрасить желтым, иначе — зеленым.
14. По щелчку рисовать один круг в месте щелчка. Раскрасить по схеме:
snimok-ekrana-ot-2016-10-21-09-51-17

15. По щелчку рисовать 5000 кругов в случайных местах. Раскрасить по схеме:
snimok-ekrana-ot-2016-10-21-09-54-38

16. Создавать шарик, давать ему случайный цвет из colors = [‘red’,’blue’,’green’,’yellow’] и, в зависимости от цвета, отправлять в одну из 4-х сторон и останавливать там.
После остановки создавать новый шарик и т.д., непрерывно, до закрытия программы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *