Formulir Kontak

 

Quiz Object 2D dengan OpenGL [PYTHON]

Modul yang harus digunakan :
  • OpenGLContext
  • PyOpenGL
  • PyVRML97
  • pillow

Source Code :

from OpenGLContext import testingcontext


from random import randrange


from OpenGL.GL import *


from OpenGL.GLU import *


from OpenGL.GLUT import *

def init():


    glClearColor(0.00.00.00.0


    gluOrtho2D(-10.0100.0, -100.010.0)




def ploting():


    glClear(GL_COLOR_BUFFER_BIT)


    # Cerobong Atas


    glColor3f(0.50.50.5)


    glBegin(GL_POLYGON)


    glVertex2f(15.5, -5.0)


    glVertex2f(24.0, -5.0)


    glVertex2f(24.0, -3.5)


    glVertex2f(9.0, -3.5)


    glVertex2f(9.0, -5.0)


    glEnd()


    glFlush()


    # Badan Cerobong 


    glColor3f(1.00.00.0)


    glBegin(GL_POLYGON)


    glVertex2f(12.5, -20.0)


    glVertex2f(12.5, -5.0)


    glVertex2f(20.0, -5.0)


    glVertex2f(20.0, -13.0)


    glEnd()


    glFlush()


    # Atap Rumah


    glColor3f(1.00.50.6)


    glBegin(GL_LINE_STRIP)


    glVertex2f(5.0, -30.0)


    glVertex2f(2.0, -30.0)


    glVertex2f(40.06.0)


    glVertex2f(78.0, -30.0)


    glVertex2f(75.0,-30.0)


    glEnd()


    glFlush()


    # Bangunan


    glColor3f(0.10.10.1)


    glBegin(GL_POLYGON)


    glVertex2f(5.0, -30.0)


    glVertex2f(40.02.0)


    glVertex2f(75.0, -30.0)


    glVertex2f(75.0, -70.0)


    glVertex2f(5.0,-70.0)


    glVertex2f(5.0,-30.0)


    glEnd()


    glFlush()


    # Jendela Kiri


    glColor3f(1.00.50.5)


    glBegin(GL_LINE_STRIP)


    glVertex2f(15.0, -47.0)


    glVertex2f(25.0, -47.0)


    glVertex2f(25.0, -57.0)


    glVertex2f(15.0, -57.0)


    glVertex2f(15.0,-47.0)


    glEnd()


    glFlush()


    # Jendela Kiri segi


    glColor3f(1.01.01.0)


    glBegin(GL_LINE_STRIP)


    glVertex2f(20.0, -47.0)


    glVertex2f(20.0, -50.0)


    glVertex2f(25.0, -50.0)


    glEnd()


    glFlush()


    # Jendela Kiri bawah


    glColor3f(1.01.01.0)


    glBegin(GL_LINE_STRIP)


    glVertex2f(20.0, -50.0)


    glVertex2f(20.0, -57.0)


    glEnd()


    glFlush()


    # Jendela Atas


    glColor3f(1.00.250.6)


    glBegin(GL_LINE_STRIP)


    glVertex2f(35.0, -20.0)


    glVertex2f(45.0, -20.0)


    glVertex2f(45.0, -30.0)


    glVertex2f(35.0, -30.0)


    glVertex2f(35.0,-20.0)


    glEnd()


    glFlush()


    # Jendela Atas segi


    glColor3f(1.01.01.0)


    glBegin(GL_LINE_STRIP)


    glVertex2f(40.0, -20.0)


    glVertex2f(40.0, -23.0)


    glVertex2f(45.0, -23.0)


    glEnd()


    glFlush()


    # Jendela Atas bawah


    glColor3f(1.01.01.0)


    glBegin(GL_LINE_STRIP)


    glVertex2f(40.0, -23.0)


    glVertex2f(40.0, -30.0)


    glEnd()


    glFlush()


    # Jendela Kanan


    glColor3f(1.00.00.0)


    glBegin(GL_LINE_STRIP)


    glVertex2f(55.0, -47.0)


    glVertex2f(65.0, -47.0)


    glVertex2f(65.0, -57.0)


    glVertex2f(55.0, -57.0)


    glVertex2f(55.0,-47.0)


    glEnd()


    glFlush()


    # Jendela Kanan segi


    glColor3f(1.01.01.0)


    glBegin(GL_LINE_STRIP)


    glVertex2f(60.0, -47.0)


    glVertex2f(60.0, -50.0)


    glVertex2f(65.0, -50.0)


    glEnd()


    glFlush()


    # Jendela Kanan bawah


    glColor3f(1.01.01.0)


    glBegin(GL_LINE_STRIP)


    glVertex2f(60.0, -50.0)


    glVertex2f(60.0, -57.0)


    glEnd()


    glFlush()


    # Bagian Atas Pintu 1


    glColor3f(1.00.50.25)


    glBegin(GL_POLYGON)


    glVertex2f(36.0, -44.0)


    glVertex2f(44.0, -44.0)


    glVertex2f(44.0, -46.0)


    glVertex2f(36.0, -46.0)


    glVertex2f(36.0,-44.0)


    glEnd()


    glFlush()


    # Bagian Atas Pintu 2


    glColor3f(1.00.50.9)


    glBegin(GL_POLYGON)


    glVertex2f(35.0, -46.0)


    glVertex2f(45.0, -46.0)


    glVertex2f(45.0, -48.0)


    glVertex2f(35.0, -48.0)


    glVertex2f(35.0,-46.0)


    glEnd()


    glFlush()


    # Bagian Atas Pintu 3


    glColor3f(1.00.50.5)


    glBegin(GL_POLYGON)


    glVertex2f(33.0, -48.0)


    glVertex2f(47.0, -48.0)


    glVertex2f(47.0, -50.0)


    glVertex2f(33.0, -50.0)


    glVertex2f(33.0,-48.0)


    glEnd()


    glFlush()


    # Pintu


    glColor3f(1.00.00.0)


    glBegin(GL_POLYGON)


    glVertex2f(35.0, -50.0)


    glVertex2f(45.0, -50.0)


    glVertex2f(45.0, -70.0)


    glVertex2f(35.0, -70.0)


    glVertex2f(35.0,-50.0)


    glEnd()


    glFlush()


    # Pondasi Bawah


    glColor3f(0.50.50.5)


    glBegin(GL_POLYGON)


    glVertex2f(2.0, -70.0)


    glVertex2f(78.0, -70.0)


    glVertex2f(78.0, -73.0)


    glVertex2f(2.0, -73.0)


    glVertex2f(2.0,-70.0)


    glEnd()


    glFlush()


    # Tangga Pertama


    glColor3f(1.01.01.0)


    glBegin(GL_POLYGON)


    glVertex2f(34.0, -69.0)


    glVertex2f(46.0, -69.0)


    glVertex2f(46.0, -70.5)


    glVertex2f(34.0, -70.5)


    glVertex2f(34.0,-69.0)


    glEnd()


    glFlush()


    # Tangga kedua


    glColor3f(1.00.00.0)


    glBegin(GL_POLYGON)


    glVertex2f(33.0, -70.5)


    glVertex2f(47.0, -70.5)


    glVertex2f(47.0, -72.0)


    glVertex2f(33.0, -72.0)


    glVertex2f(33.0,-70.5)


    glEnd()


    glFlush()


    # Tangga ketiga


    glColor3f(1.01.01.0)


    glBegin(GL_POLYGON)


    glVertex2f(32.0, -72)


    glVertex2f(48.0, -72)


    glVertex2f(48.0, -73.5)


    glVertex2f(32.0, -73.5)


    glVertex2f(32.0,-72)


    glEnd()


    glFlush()


    # Tangga C 1


    glColor3f(1.01.01.0)


    glBegin(GL_LINE_STRIP)


    glVertex2f(32.0, -72)


    glVertex2f(48.0, -72)


    glVertex2f(48.0, -73.5)


    glVertex2f(32.0, -73.5)


    glVertex2f(32.0,-72)


    glEnd()


    glFlush()

    def drawBitmapText(string,x,y,z) :
    glRasterPos3f(x,y,z)
    for text in string :
        glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,ord(text))

def reshape(wh):
    glViewport(0,0,w,h)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluOrtho2D(0,w,h,0)
    glMatrixMode(GL_MODELVIEW)
    glLoadIdentity()

# Fungsi untuk mendapatkan callback event handling Pada Mouse
def input_mouse(buttonstatexy):
    global merah, hijau, biru
    global bg_red, bg_green, bg_blue
    global light_red, light_green, light_blue
    global kt_red, kt_green, kt_blue

    
# Fungsi untuk mendapatkan callback event handling Pada Keyboard Tombol khusus
def input_keyboard_special_func(key,x,y):
    global pos_x, pos_y
    global warna_background
    global teks_merah, teks_hijau, teks_biru
 
    # Untuk mengubah posisi Rumahku dengan menekan
    # Tombol Key UP, Key DOWN, Key RIGHT, Key LEFT
    # saat ditekan nilai pada variable pos_x dan pos_y
    # akan berubah secara increment dan decremant dengan pertambahan 20
    if key == GLUT_KEY_UP:
        pos_y += 20
        print("Tombol Atas ditekan ""x : ", pos_x, " y : ", pos_y)
        print("Koor ""x : ", koordinat_x, " y : ", koordinat_y)
    elif key == GLUT_KEY_DOWN:
        pos_y -= 20
        print("Tombol Bawah ditekan ""x : ", pos_x, " y : ", pos_y)
        print("Koor ""x : ", koordinat_x, " y : ", koordinat_y)
    elif key == GLUT_KEY_RIGHT:
        pos_x += 20
        print("Tombol Kanan ditekan ""x : ", pos_x, " y : ", pos_y)
        print("Koor ""x : ", koordinat_x, " y : ", koordinat_y)
    elif key == GLUT_KEY_LEFT:
        pos_x -= 20
        print("Tombol Kiri ditekan ""x : ", pos_x, " y : ", pos_y)
        print("Koor ""x : ", koordinat_x, " y : ", koordinat_y)

# Fungsi untuk mendapatkan callback event handling Pada Keyboard Tombol yang akan mengembalikan nilai ascii
def input_keyboard_func(keyxy):

    global zoom_x, zoom_y
    global rotation

    dk = key.decode("utf-8")

    # Untuk mengatur Zoom In & Out pada gambar Tekan tombol a / s
    # Maka variable zoom_x dan zoom_y
    # akan berubah secara increment dan decrement
    # dengan pertamban 0.1
    if dk == 'a' or dk == 'A':
        zoom_x += 0.1
        zoom_y += 0.1
    elif dk == 's' or dk == 'S':
        zoom_x -= 0.1
        zoom_y -= 0.1

    # Untuk mengatur Rotasi ke kanan / kiri pada gambar Tekan tombol z / x
    # Maka variable rotation akan berubah secara increment dan decrement
    # dengan pertamban 10
    elif dk == 'z' or dk == 'Z':
        rotation -= 10
        print(rotation)
    elif dk == 'x' or dk == 'X':
        rotation += 10
        print(rotation)
    

def update(value):
    global koordinat_x, koordinat_y, pos_x, pos_y
    global angka
    global kt
    global kt_red, kt_green, kt_blue
    
    # Untuk mengatur posisi kotak
    # Secara Randaom
    koordinat_x = randrange(-800,100)
    koordinat_y = randrange(-100,800)

    # Untuk mendapatkan Poin
    # atau nilai koor_x, koor_y sama dengan pos_x, pos_y
  

# Fungsi untuk menampilkan Teks Pada Window
def drawText():
    glColor3f(teks_merah,teks_hijau,teks_biru)
    # Petunjuk Pemakaia
    drawBitmapText("GAMBAR : ",-460,440,0)
    drawBitmapText("Rumahku",-460,400,0)
    # Kontrol
    drawBitmapText("KONTROL :",-460,-200,0)
    drawBitmapText("- Untuk Scaling Tekan tombol => a/s a = zoom in, s = zoom out",-460,-240,0)
    drawBitmapText("- Untuk rotasi tekan tombol => z/x z = searah jarum jam, x = berlawanan",-460,-280,0)
    #INFORMASI
    drawBitmapText("INFORMASI : " ,-460,-320,0)
    drawBitmapText("-> Ganti Warna Klik Mouse Kanan dan Kiri",-460,-360,0)
    drawBitmapText("-> Untuk Menjalankan Objek Tekan Keyboard => KEY UP, KEY DOWN, KEY RIGHT, KEY LEFT " ,-460,-400,0)
    drawBitmapText("-> Angka => " + str(angka),-460,-440,0)
   

# Fungsi untuk menampilkan semua bentuk atau objek pada Window
def display():
    glClear(GL_COLOR_BUFFER_BIT)
    # Deklarasi Sektsa Rumahku
    glPushMatrix()
    shape()
    glPopMatrix()
    # Deklarasi Bentuk Kotak
    kotak()
    # Deklarasi untuk Teks
    drawText()

    glFlush()




def main():

    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowSize(900,600)
    glutInitWindowPosition(100,100)
    glutCreateWindow(" Pertemuan 10 . Quiz - Rumahku")

    glutSpecialFunc(input_keyboard_special_func)
    glutKeyboardFunc(input_keyboard_func)
    glutMouseFunc(input_mouse)

    glutTimerFunc(50, update, 0)
glutDisplayFunc(ploting)

    init()
    glutMainLoop()



main() 

Total comment

Author

kangmasrizqi
Modul yang digunakan :

  • PyOpenGL

Source Code :

# Nama : Rizqi Maulana Bahtiar
# NIM  : 17102068

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

piramid_a = 0
piramid_b = 0

def init():
    glClearColor(0.,0.,0.,0.) 
    glEnable(GL_DEPTH_TEST) 
    gluOrtho2D(-20.020.0, -20.020.0)


def myDisplay():
    global piramid_a, piramid_b

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) 
    glMatrixMode(GL_MODELVIEW) 
    glLoadIdentity() 

    glTranslatef(00, -7.0);
    glRotatef( piramid_a, 1.00.00.0 );
    glRotatef( piramid_b, 0.01.00.0 );
    

    glBegin(GL_QUADS) # digunakan untuk membentuk penutup alas persegi piramid
    # Bagian alas segitiga atau piramida (y = -1.0)
    glColor3f(2.22.61.8);     
    glVertex3f( 1.0, -1.0,  1.0);
    glVertex3f(-1.0, -1.0,  1.0);
    glVertex3f(-1.0, -1.0, -1.0);
    glVertex3f( 1.0, -1.0, -1.0);
    glEnd();
    
    glBegin(GL_TRIANGLES) # digunakan untuk membentuk segitiga piramid
    # Bagian Depan Piramida atau front face (z = 1.0)
    glColor3f(1.54.00.0);     
    glVertex3f( 1.0, -1.01.0);
    glVertex3f( -1.0, -1.01.0);
    glVertex3f(01.00);

    # Bagian kiri atau Left face  (x = -1.0)
    glColor3f(0.00.36.0);   
    glVertex3f(-1.0, -1.0,  1.0);
    glVertex3f(-1.0, -1.0, -1.0);
    glVertex3f(01.00);

    # Bagian Kanan atau Right face (x = 1.0)
    glColor3f(8.02.50.0);     
    glVertex3f( 1.0, -1.01.0); 
    glVertex3f( 1.0, -1.0, -1.0);
    glVertex3f(01.00);

    # Bagian Belakang Back face (z = -1.0)
    glColor3f(0.43.01.0);    
    glVertex3f( -1.0, -1.0,  -1.0);
    glVertex3f( 1.0, -1.0,  -1.0);
    glVertex3f(01.00);

    glEnd();  
    glutSwapBuffers()
    glFlush()

def putar(key,x,y):
    global piramid_a, piramid_b

    if key == GLUT_KEY_RIGHT:
        piramid_a += 5
    elif key == GLUT_KEY_LEFT:
        piramid_a -= 5
    elif key == GLUT_KEY_UP:
        piramid_b += 5
    elif key == GLUT_KEY_DOWN:
        piramid_b -= 5

def update(value):
    glutPostRedisplay()
    glutTimerFunc(10,update,0)

# Fungsi di atas berguna untuk bahwa objek benar adalah 3D dan menggunakan kontrol key UP, DOWN, RIGHT, LEFT untuk mengatur pergerakan piramid.

def reshape(widthheight): 
   aspect = width / height;
   glViewport(00, width, height);
   glMatrixMode(GL_PROJECTION);  
   glLoadIdentity();             
   gluPerspective(45.0, aspect, 0.1100.0);

def main():
    # Initialize GLUT
    glutInit(sys.argv) 
    glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE) 
    glutInitWindowSize(500,500
    glutInitWindowPosition(100,100
    glutCreateWindow("Pertemuan 11 - Piramid 3D")
    glutSpecialFunc(putar)
    glutTimerFunc(50, update, 0)
    glutDisplayFunc(myDisplay)
    glutReshapeFunc(reshape) 
    init() 
    glutMainLoop() 
main()

Output :


Total comment

Author

kangmasrizqi
Modul yang digunakan :

  • PyOpenGL
  • pillow
  • OpenGLContext

Source Code : 


from OpenGLContext import testingcontext
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

# Koordinat x dan y untuk posisi kotak
pos_x = 0
pos_y = 0

# Warna Kotak
merah = 0
hijau = 0
biru = 0

# Warna Teks
teks_merah = 1
teks_hijau = 1
teks_biru = 1

# Teks Warna Objek
warna_objek = "Hitam"

# Teks Warna Background
warna_background = "Hitam"


def init():
    glClearColor(0.00.00.01.0)
    gluOrtho2D(-500.0500.0, -500.0500.0)

#Perintah untuk menambahkan teks TIMES_ROMAN size 24
def drawBitmapText(string,x,y,z) :
    glRasterPos3f(x,y,z)
    for c in string :
        glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,ord(c))

def reshape(wh):
    glViewport(0,0,w,h)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluOrtho2D(0,w,h,0)
    glMatrixMode(GL_MODELVIEW)
    glLoadIdentity()

def drawText():
    glColor3f(teks_merah,teks_hijau,teks_biru)
    drawBitmapText("Warna",-460,-350,0)
    drawBitmapText("Objek : " + warna_objek,-460,-400,0)
    drawBitmapText("Backgorund : " + warna_background ,-460,-450,0)  

# Membuat bentuk kotak
def kotak():
    global pos_x, pos_y
    glColor3f(merah,hijau,biru)
    
    glBegin(GL_POLYGON)
    # Kiri Atas
    glVertex2f(-50 + pos_x,-50 + pos_y)
    # Kanan Atas
    glVertex2f(50 + pos_x,-50 + pos_y)
    # Kanan Bawah
    glVertex2f(50 + pos_x,50 + pos_y)
    # Kiri Bawah
    glVertex2f(-50 + pos_x,50 + pos_y)
    glEnd()

def display():
    glClear(GL_COLOR_BUFFER_BIT)

    drawText();

    glColor3f(1.0,1.0,1.0
    glBegin(GL_LINES)
    glVertex2f(-500.00.0)
    glVertex2f(500.00.0)
    glVertex2f(0.0500.0)
    glVertex2f(0.0, -500.0)
    glEnd()
  
    glPushMatrix()
    kotak()
    glPopMatrix()

    glFlush()

def input_mouse(buttonstatexy):
    global merah, hijau, biru
    global warna_objek
    
    # Saat mengklik kanan warna kotak akan berubah menjadi warna hijau dan biru
    if button == GLUT_RIGHT_BUTTON and state == GLUT_DOWN:
        if hijau < 1:
            merah = 0
            hijau = 1
            biru = 0
            warna_objek = "Hijau"
        elif biru < 1:
            merah = 0
            hijau = 0
            biru = 1
            warna_objek = "Biru"
        print("Klik Kanan ditekan ""(", x, ",", y, ")")
     # Saat mengklik kiri warna kotak akan berubah menjadi warna merah dan hitam
    elif button == GLUT_LEFT_BUTTON and state == GLUT_DOWN:
        if merah < 1:
            merah = 1
            hijau = 0
            biru = 0
            warna_objek = "Merah"
        else:
            merah = 0
            hijau = 0
            biru = 0
            warna_objek = "Hitam"
            
        print("Klik Kiri ditekan ""(", x, ",", y, ")")

def input_keyboard(key,x,y):
    global pos_x, pos_y
    global warna_background
    global teks_merah, teks_hijau, teks_biru

    # Untuk mengubah posisi kotak

    if key == GLUT_KEY_UP:
        pos_y += 5
        print("Tombol Atas ditekan ""x : ", pos_x, " y : ", pos_y)
    elif key == GLUT_KEY_DOWN:
        pos_y -= 5
        print("Tombol Bawah ditekan ""x : ", pos_x, " y : ", pos_y)
    elif key == GLUT_KEY_RIGHT:
        pos_x += 5
        print("Tombol Kanan ditekan ""x : ", pos_x, " y : ", pos_y)
    elif key == GLUT_KEY_LEFT:
        pos_x -= 5
        print("Tombol Kiri ditekan ""x : ", pos_x, " y : ", pos_y)

    # Untuk Mengubah Warna backgorund window
    
    # Background Kiri Atas berubah warna menjadi Merah
    if pos_x < 0 and pos_y > 0:
        glClearColor(1.00.00.01.0)
        warna_background = "Merah"

        teks_merah = 0
        teks_hijau = 0
        teks_biru = 0

    # Background Kanan Atas berubah warna menjadi Hijau
    if pos_x > 0 and pos_y > 0:
        glClearColor(0.01.00.01.0)
        warna_background = "Hijau"

        teks_merah = 0
        teks_hijau = 0
        teks_biru = 0

    # Background Kanan Bawah berubah warna menjadi Biru
    if pos_x > 0 and pos_y < 0:
        glClearColor(0.0,0.0,1.0,1.0)
        warna_background = "Biru"

        teks_merah = 1
        teks_hijau = 1
        teks_biru = 1

    # Background Kiri Bawah berubah warna menjadi Hitam
    if pos_x < 0 and pos_y < 0:
        glClearColor(0.0,0.0,0.0,1.0)
        warna_background = "Hitam"

        teks_merah = 1
        teks_hijau = 1
        teks_biru = 1   

def update(value):
    glutPostRedisplay()
    glutTimerFunc(10,update,0)

def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowSize(500,500)
    glutInitWindowPosition(100,100)
    glutCreateWindow("Pertemuan 9 - Font dan text pada Event Handling")

    glutDisplayFunc(display)

    glutSpecialFunc(input_keyboard)
    glutMouseFunc(input_mouse)

    glutTimerFunc(50, update, 0)   

    init()
    glutMainLoop()
    
main()


Output : 


Total comment

Author

kangmasrizqi
Modul yang digunakan :

  • PyOpenGL

Source Code :

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

# Inialisasi untuk Koordinat x dan y untuk posisi kotak
pos_x = 0
pos_y = 0

# Warna Kotak
merah = 0
hijau = 0
biru = 0


def init():
    glClearColor(0.00.00.01.0)
    gluOrtho2D(-500.0500.0, -500.0500.0)

def kotak():
    global pos_x, pos_y
    glColor3f(merah,hijau,biru)
    
    glBegin(GL_POLYGON)
    # Kiri Atas
    glVertex2f(-50 + pos_x,-50 + pos_y)
    # Kanan Atas
    glVertex2f(50 + pos_x,-50 + pos_y)
    # Kanan Bawah
    glVertex2f(50 + pos_x,50 + pos_y)
    # Kiri Bawah
    glVertex2f(-50 + pos_x,50 + pos_y)
    glEnd()


def display():
    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(1.,1.0,1.0
    glBegin(GL_LINES)
    glVertex2f(-500.00.0)
    glVertex2f(500.00.0)
    glVertex2f(0.0500.0)
    glVertex2f(0.0, -500.0)
    glEnd()

    glPushMatrix()
    kotak()
    glPopMatrix()


    glFlush()

def input_mouse(buttonstatexy):
    global merah, hijau, biru
    if button == GLUT_RIGHT_BUTTON and state == GLUT_DOWN:
        if hijau < 1:
            merah = 0
            hijau = 1
            biru = 0
        elif biru < 1:
            merah = 0
            hijau = 0
            biru = 1
        print("Klik Kanan ditekan ""(", x, ",", y, ")")
    elif button == GLUT_LEFT_BUTTON and state == GLUT_DOWN:
        if merah < 1:
            merah = 1
            hijau = 0
            biru = 0
        else:
            merah = 0
            hijau = 0
            biru = 0
        print("Klik Kiri ditekan ""(", x, ",", y, ")")

def input_keyboard(key,x,y):
    global pos_x, pos_y

    # Fungsi ini untuk merubah posisi kotak pada tombol keyboard

    if key == GLUT_KEY_UP:
        pos_y += 5
        print("Tombol Atas ditekan ""x : ", pos_x, " y : ", pos_y)
    elif key == GLUT_KEY_DOWN:
        pos_y -= 5
        print("Tombol Bawah ditekan ""x : ", pos_x, " y : ", pos_y)
    elif key == GLUT_KEY_RIGHT:
        pos_x += 5
        print("Tombol Kanan ditekan ""x : ", pos_x, " y : ", pos_y)
    elif key == GLUT_KEY_LEFT:
        pos_x -= 5
        print("Tombol Kiri ditekan ""x : ", pos_x, " y : ", pos_y)

    # Untuk Mengubah Warna background window
    
    # Jika Benda di gerakan ke Background Kiri Atas akan berubah warna menjadi Merah
    if pos_x < 0 and pos_y > 0:
        glClearColor(1.00.00.01.0)
    # Jika Benda di gerakan ke Background Kanan Atas akan berubah warna menjadi Hijau
    if pos_x > 0 and pos_y > 0:
        glClearColor(0.01.00.01.0)
    # Jika Benda di gerakan ke Background Kanan Bawah akan berubah warna menjadi Biru
    if pos_x > 0 and pos_y < 0:
        glClearColor(0.0,0.0,1.0,1.0)
    # Jika Benda di gerakan ke Background Kiri Bawah akan berubah warna menjadi Hitam
    if pos_x < 0 and pos_y < 0:
        glClearColor(0.0,0.0,0.0,1.0)
  

def update(value):
    glutPostRedisplay()
    glutTimerFunc(10,update,0)

def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowSize(500,500)
    glutInitWindowPosition(100,100)
    glutCreateWindow("Pertemuan 8 - Event Handling Keyboard & Mouse")
    glutDisplayFunc(display)
    glutSpecialFunc(input_keyboard)
    glutMouseFunc(input_mouse)
    glutTimerFunc(50, update, 0)
    
    init()
    glutMainLoop()
    
main()

Output :









Total comment

Author

kangmasrizqi