Anda di halaman 1dari 7

LAPORAN PRAKTIKUM IV

GRAFIKA KOMPUTER
INTERAKSI

Disusun untuk memenuhi Matakuliah Praktikum Grafika Komputer

Dibimbing oleh Ahmad Mursyidun Nidhom, S.Pd., M.Pd.

Disusun oleh :

Xaphyra Aura Shava Aulia 190533646844

S1 PTI ’19 OFF C

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA
SEPTEMBER 2020
A. TUGAS PRAKTIKUM
1. Buatlah sebuah baling-baling yang bisa berputar secara clockwise dan
unclockwise yang pusatnya berada pada koordinat. Dengan kontrol dari tombol
‘k’ dan ‘l’.
Source Code

#include <stdlib.h>
#include <glut.h>
void Triangles(){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(2.0f, 0.5f, 1.0f);
glVertex2f(0.,0.);
glVertex2f(20.,40.);
glVertex2f(-20.,40.);
glColor3f(0.5f, 1.0f, 1.0f);
glVertex2f(0.,0.);
glVertex2f(-20.,-40.);
glVertex2f(20.,-40.);
glEnd();
glFlush();
}
void renderScene(){
glClear(GL_COLOR_BUFFER_BIT);
Triangles();
glFlush();
}
void myKeyboard(unsigned char key, int x, int y){
if(key=='k')glRotatef(50,0,0,1);
else if (key=='l')glRotatef(-50,0,0,1);
}
void update(int value){
glutPostRedisplay();
glutTimerFunc(60,update,0);
}
void main (int argc, char **argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(150,150);
glutInitWindowSize(450,450);
glutCreateWindow("Xaphyra Aura : Baling-baling putar
(k&l)");
gluOrtho2D(-50.,50.,-50.,50.);
glutDisplayFunc(renderScene);
glutKeyboardFunc(myKeyboard);
glutTimerFunc(60,update,0);
glutMainLoop();
}
Output

Posisi baling-baling jika tombol k ditekan Posisi baling-baling jika tombol l ditekan
2. Buatlah 2 benda (kotak dan segitiga) yang dapat dikendalikan secara individual
dengan memanfaatkan tombol untuk tangan kanan dan tombol kiri (‘a’,’s’,’d’,’w’
untuk kotak dan ‘tombol atas, bawah, kiri, kanan’ untuk segitiga) atau dengan
metode yang lain.
Source Code

#include <stdlib.h>
#include <glut.h>
int a,s,d,w;
void persegi(){
glBegin(GL_QUADS);
glColor3f(0.5f, 1.0f, 1.0f);
glVertex2d(0,0);
glVertex2d(45,50);
glVertex2d(0,100);
glVertex2d(-45,50);
glEnd();
}
void myKeyboard(unsigned char key, int x, int y){
if (key=='A'||key=='a'){
a-=50;
}
else if (key=='S'||key=='s'){
s-=50;
}
else if (key=='D'||key=='d'){
a +=50;
}
else if (key=='W'||key=='w'){
s+=50;
}
}
void segitiga(){
glBegin(GL_TRIANGLES);
glColor3f(0.0f, 0.5f, 1.0f);
glVertex2f(100.,10.);
glVertex2f(150.,-50.);
glVertex2f(50.,-50);
glEnd();
}
void mySpecialKeyboard(int key, int x, int y){
switch (key){
case GLUT_KEY_LEFT:
d -=50;
break;
case GLUT_KEY_RIGHT:
d+=50;
break;
case GLUT_KEY_UP:
w+=50;
break;
case GLUT_KEY_DOWN:
w-=50;
void renderScene(){
break;
}glClear(GL_COLOR_BUFFER_BIT);glPushMatrix();
} glTranslatef(a,s,0);
persegi();
glPopMatrix();
glPushMatrix();
glTranslatef(d,w,0);
segitiga();
Output

Posisi kotak jika tombol asdw ditekan

Posisi segitiga jika tombol tanda panah


ditekan
3. Tambahkan interaksi keyboard menggunakan baling-baling berubah menjadi
warna hijau bila ditekan huruf “p” dan menjadi kuning bila ditekan huruf “o”!
Source Code

#include <stdlib.h>
#include <glut.h>
int x,y;
void drawQuad(){
glBegin(GL_TRIANGLES);
glVertex2f(0.,0.);
glVertex2f(20.,40.);
glVertex2f(-20.,40.);
glVertex2f(0.,0.);
glVertex2f(-20.,-40.);
glVertex2f(20.,-40.);
glEnd();
glFlush();
}
void myKeyboard(unsigned char key, int x, int y){
if (key =='p')glColor3f(0.0f, 1.0f, 0.0f);
else if (key == 'o')glColor4f(1.0f, 1.0f, 0.0f, 0.0f);
}
void update (int value){
glutPostRedisplay();
glutTimerFunc(10,update,0);
}
void display(){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
drawQuad();
glPopMatrix();
glFlush();
}
void main (int argc, char **argv){
glutInitWindowPosition(150,150);
glutInitWindowSize(350,350);
glutCreateWindow("Xaphyra Aura : Baling-baling warna ");
gluOrtho2D(-50.,50.,-50.,50.);
glutDisplayFunc(display);
glutKeyboardFunc(myKeyboard);
glutTimerFunc(10,update,0);
glutMainLoop();
}

Output
Jika, ditekan huruf “p’ akan berwarna Jika, ditekan huruf “o’ akan berwarna
hijau kuning

Anda mungkin juga menyukai