MOUSE
PEMROGRAMAN GRAFIS
USING SCREEN EVENTS (KEYS)
turtle.onkey(a,b)
Mengubungkan event dengan keyboard
turtle.onkeyrelease(a,b)
Dimana a: fungsi dengan argument (default None)
b: string dari tombol di keyboard ex: ‘a’, ‘space’
EXAMPLE KEY EVENTS
def example():
fd(100)
left(90)
onkey(example, "Up")
listen()
exitonclick()
Pena akan bergerak maju 100 pixel dan
belok kiri 90 derajat Ketika tombol Up
ditekan
from turtle import *
EXAMPLE KEY EVENTS
def f():
fd(30)
def b():
Pola yang dibentuk dengan menggerakkan Up, bk(30)
def l():
Down, Left dan Right left(30)
def r():
right(30)
onkey(f, "Up")
onkey(b, "Down")
onkey(l, "Left")
onkey(r, "Right")
listen()
exitonclick()
from turtle import *
def f():
EXAMPLE KEY EVENTS color('red')
fd(30)
def b():
color('blue')
• onkeypress: bergerak saat key ditekan sekali atau ditekan bk(30)
terus menerus def l():
color('green')
• onkeyrelease / onkey: bergerak sesuai jumlah key ditekan, left(10)
def r():
jika ditekan sekalimaka hanya bergerak sekali
color('purple')
right(30)
onkeypress(f, "Up")
onkeyrelease(b, "Down")
onkey(l, "Left")
onkey(r, "Right")
listen()
exitonclick()
USING SCREEN EVENTS (MOUSE)
• Langkah pertama untuk mengenali pergerakan mouse adalah mengenali di titik / koordinat
mana mouse tersebut di klik
onscreenclick(get_coord)
onscreenclick(get_coord)
done()
Memindagkan pena ke titik (x,y) yang di klik oleh tombol kiri mouse
CHANGE THE DIRECTION OF TURTLE
onscreenclick(get_coord)
onscreenclick(get_coord)
done()
def right(): turtle.onkey(up, "Up") # memanggil fungsi ketika tombol "Left" ditekan
turtle.setheading(0) turtle.onkey(down, "Down")
turtle.forward(100) turtle.onkey(left, "Left")
turtle.onkey(right, "Right")
turtle.done()
MEMBUAT STATE MACHINE:TRAFFIC LIGHT
def draw_housing():
""" Menggambar rangka Lampu Lalu Lintas """
turtle.pensize(3)
turtle.color("black", "darkgrey")
turtle.begin_fill()
turtle.forward(80)
turtle.left(90)
turtle.forward(200)
turtle.circle(40, 180)
turtle.forward(200)
turtle.left(90)
turtle.end_fill()
draw_housing()
turtle.penup()
# meletakkan pena pada koordinat yg sesuai
turtle.goto(40,50)
# membuat lampu hijau
turtle.shape("circle")
turtle.shapesize(3)
turtle.fillcolor("green")
# variabel bantu untuk menentukan status lampu lalu lintas (red/yellow/green)
stateNum = 0
STATE MACHINE
def advance_state_machine():
global stateNum
if stateNum == 0: # transisi dari status 0 ke 1 Lampu lalu lintas adalah sejenis
turtle.goto(40,110) mesin status dengan tiga status:
turtle.fillcolor("yellow") # Hijau, Kuning, Merah. Di
stateNum = 1 program ini status ditandai
elif stateNum == 1: # transisi dari status 1 ke 2 dengan angka 0, 1, 2. Saat mesin
turtle.goto(40,180) berubah status, maka posisi dan
turtle.fillcolor("red") warna turtle berubah
stateNum = 2
else: # transisi dari status 2 ke 0
turtle.goto(40,50)
turtle.fillcolor("green")
stateNum = 0
turtle.setup(400,500)
screen = turtle.Screen()
screen.title("Using a timer")
screen.bgcolor("lightgreen")
turtle.color("purple")
turtle.pensize(3)
def h1():
turtle.forward(100)
turtle.left(56)
screen.ontimer(h1, 2000)
screen.exitonclick()
CONTINUES MOVING WITH TIMER
import turtle
turtle.setup(400,500)
screen = turtle.Screen()
turtle.color("purple")
def h1():
turtle.forward(100)
turtle.left(56)
screen.ontimer(h1, 60)
• Input pengguna di turtle dapat diperoleh dengan menggunakan dua metode input grafis
yang disediakan modul turtle:
• textinput()
• numinput()
• Untuk menulis program dinamis, makamembutuhkan fungsi yang dapat menerima input
dari pengguna.
• Misalnya, jika kita ingin menggambar lingkaran dengan radius yang bervariasi, kita dapat
memberi inputan agar user mengetik radius lingkaran daripada mendeklarasikan secara
statis di kode program
TEXT INPUT
Berfungsi untuk menampilan jendela box, tempat user memasukkan data angka
Dimana :
title → judul jendela dialog
prompt → teks yang menjelaskan informasi apa yang harus dimasukkan
Default → nilai default
Minval → minimum value
Maxval → maksimal value
EXAMPLE OF NUMINPUT
• Tulis sebuah program yang meminta pengguna untuk memasukkan 3 nilai radius dan
kemudian menggambar tiga lingkaran dengan jari-jari tersebut di tengah kanvas.
• Tulis sebuah program yang meminta User untuk memasukkan bentuk yang ingin mereka lihat
di kanvas. Misal kita definisikan tiga bentuk yang dikenali yaitu ‘circle’, ‘square’, dan ‘octagon’.
Jika User memasukkan ‘circle’ sebagai inputan maka turtle akan menggambar lingkaran, begitu
juga dengan inputan square dan octagon
from turtle import *
shape("turtle")
pensize(5)
def square():
for i in range(4):
forward(100)
left(90)
def cir():
circle(100)
def octagon():
for i in range(8):
forward(50)
left(45)
shape = textinput("shape", "Masukkan bentuk yang Anda inginkan (square, circle, octagon):")
if shape == "circle":
cir()
elif shape == "square":
square()
elif shape == "octagon":
octagon()
TUGAS
1. Tuliskan kode program yang dapat membuat bentuk berikut dengan menekan 9 kali
tombol keyboard yang sama:
TUGAS
2. Tuliskan kode program yang dapat membuat gambar berikut hanya menggunakan 3
tombol mouse saja:
TUGAS
3. Buat program yang meminta User menginputkan bentuk, warna, dan bentuk pena.
Definisikan 4 bentuk yang dapat dipilih: oval, trapezium, belah ketupat dan pie chart
Definisikan 4 warna yang dapat dipilih: red, green, blue, orange
Definiskan 3 bentuk pena yang dapat dipilih: circle, turtle dan square
Buat fungsi untuk setiap bentuk tersebut!