Anda di halaman 1dari 29

MOVE TURTLE WITH KEYS &

MOUSE
PEMROGRAMAN GRAFIS
USING SCREEN EVENTS (KEYS)

turtle.listen() Mengatur focus turtle pada screen (mengeksekusi key events)

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

from turtle import *

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)

turtle.onclick(a,b,c) Mengubungkan event dengan mouse


turtle.onscreenclick(a,b,c)
Dimana :
a → fungsi dengan dua argumen yang akan dipanggil dengan
koordinat titik yang diklik di kanvas
b → jumlah tombol mouse, default ke 1 (tombol kiri mouse)
c → bernilai True/False
GET COORDINATES

• Langkah pertama untuk mengenali pergerakan mouse adalah mengenali di titik / koordinat
mana mouse tersebut di klik

from turtle import *

def get_coord(x, y):


print(x, y)

onscreenclick(get_coord)

done() Menampilkan titik koordinat setiap kali mouse di klik di canvas


MOVE TURTLE WITH MOUSE CLICK

from turtle import *

def get_coord(x, y):


goto(x, y)

onscreenclick(get_coord)

done()

Memindagkan pena ke titik (x,y) yang di klik oleh tombol kiri mouse
CHANGE THE DIRECTION OF TURTLE

from turtle import * from turtle import *


shapesize(10,10,5) shapesize(10,10,5)

def get_coord(x, y): def get_coord(x, y):


goto(x,y) setheading(towards(x,y))
goto(x,y)
onscreenclick(get_coord)
onscreenclick(get_coord)
done()
done()
Before setheading
After setheading
DRAG TURTLE WITH MOUSE

from turtle import *


shape('turtle'
shapesize(2,2,1)
color('green')

def get_coord(x, y):


ondrag(None)
setheading(towards(x,y))
goto(x,y)
ondrag(get_coord)

onscreenclick(get_coord)

done() Turtle bergerak Ketika mouse ditekan dan digeser


DRAG TURTLE WITH MOUSE

from turtle import *


shape('circle')

def get_coord(x, y):


ondrag(None)
goto(x,y)
ondrag(get_coord)

onscreenclick(get_coord)

done()

Drag turtlde dengan mouse tanpa mempedulikan arah direction turtle


MOVE TURTLE WITH MOUSE
AND KEYS
import turtle
import random
colors = ["red", "blue", "green", "yellow", "black"]
def up():
turtle.setheading(90) def clickLeft(x, y): # pastikan mendapat koordinat x y
turtle.forward(100) turtle.color(random.choice(colors))

def down(): def clickRight(x, y):


turtle.setheading(270) turtle.stamp()
turtle.forward(100)
turtle.listen()
def left():
turtle.setheading(180) turtle.onscreenclick(clickLeft, 1) # 1:Left Mouse Button, 2: Middle Mouse Button
turtle.forward(100) turtle.onscreenclick(clickRight, 3) # 3: Right Mouse Button

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

Setiap key space dipencet maka lampu berganti warna


import turtle

screen = turtle.Screen() STATE MACHINE


turtle.setup(300,600)
screen.title("Membuat traffic light!")
screen.bgcolor("lightgreen")

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

# kaitkan antara perubahan status lampu dengan tombol space


turtle.onkey(advance_state_machine, "space")

turtle.listen() # Listen key events


turtle.done()
USING A TIMER

turtle.ontimer(fungsi, time) Berfungsi untuk memanggil Timer, dengan cara memanggil


Fungsi yang ada pada parameter setelah waktu Time habis.
Dimana :
Fungsi → fungsi yang kita definisikan (perintah yang diberikan
pada turtle)
Time → waktu dalam milisecond
EXAMPLE OF USING A TIMER
import turtle

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()

screen.title("Using a timer to get events!")


screen.bgcolor("lightgreen")

turtle.color("purple")
def h1():
turtle.forward(100)
turtle.left(56)
screen.ontimer(h1, 60)

h1() Ketika Timer diletakkan pada fungsi, maka timer


turtle.exitonclick() akan terus bekerja sampai kita klik Exit
HOW TO GET USER INPUT IN TURTLE

• 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

turtle.textinput(title, prompt) Berfungsi untuk menampilan jendela box, tempat user


memasukkan teks
Dimana :
title → judul jendela dialog
prompt → prompt adalah teks yang sebagian besar
menjelaskan informasi apa yang harus dimasukkan.
EXAMPLE OF TEXTINPUT

from turtle import *


name = textinput("Name", "what is your name:")
NUMERIC INPUT

turtle.numinput(title, prompt, default=None, minval=None, maxval=None)

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

from turtle import *


name = numinput("Age","How old are you:",18, minval=15, maxval=20)
ACTIVITY: CONCENTRIC CIRCLES

• Tulis sebuah program yang meminta pengguna untuk memasukkan 3 nilai radius dan
kemudian menggambar tiga lingkaran dengan jari-jari tersebut di tengah kanvas.

from turtle import *


pensize(5)
shape("turtle")
speed(5)
color('blue')
radius1 = numinput("Radius","Masukkan jari-jari ke-1: ",20,minval=10,maxval=200)
radius2 = numinput("Radius","Masukkan jari-jari ke-2: ",20,minval=10,maxval=200)
radius3 = numinput("Radius","Masukkan jari-jari ke-3: ",20,minval=10,maxval=200)
circle(radius1)
circle(radius2)
circle(radius3)
done()
ACTIVITY: THE SHAPES

• 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!

Anda mungkin juga menyukai