GAME BAJAJ RACING BERGENRE ARCADE
MENGGUNAKAN
APLIKASI PADA PYTHON 2.7.11
Disusun Oleh :
Nama
: Fikri Alwan
Kelas : 3 IA 24
NPM : 52415670
Jurusan : Teknik Informatika
NPM : 52415670
Jurusan : Teknik Informatika
APLIKASI
YANG DIGUNAKAN DALAM PEMBUATAN PADA GAME BAJAJ RACING :
- PYTHON ( 2.7.11 )
- PYGAME (1.9.1 )
- ADOBE ILLUSTRATOR
ALUR CERITA TENTANG GAME BAJAJ RACING
game bajaj racing ini dimana game yang bergenre arcade,
arcade adalah mengumpulkan nilai setinggi – tingginya pada game tersebut. Pada
game ini dimana ada 1 bajaj yang dimainkan oleh user, dimana user menggerakan
pesawat tersebut ke kanan dan kekiri unuk menghindari mobil yang datang dari
arah berlawan yang dimana setiap kali bajaj melewati rintangan 1 mobil, maka
user akan mendapatkan nilai +1 dan
seterusnya, semakin lama dan semakin banyak nilai yang dikumpulkan, maka
semakin cepat juga mobil musuh yang datang untuk menghadang pada bajaj tersebut.
INSTALASI PADA PYTHON
pertama
kita memiliki aplikasi python, lalu install python hingga seperti berikut :
INSTALASI
PADA PYGAME
setelah sudah meng install Python, langkah
kedua meng install Pygame ikuti sampai seperti berikut
PROSES
PEMBUATAN GAME PESAWATAN
pertama kita masuk ke aplikasi Python yang
telah kita install tadi, lalu kita masuk kedalam Idle Python seperti
gambar berikut :
kemudian klik File pada Idle Python yang tadi
lalu pilih New File lalu akan masuk kedalam file baru yang nantinya akan
memulai proses pembuatan pada script untuk game bajaj, seperti gambar dibawah
ini ;
PROSES
PEMBUATAN SCRIPT
proses kali ini membuat script pada Python,
dimana Python tidak menggunakan GUI, akan tetapi memanggil fungsi script yang
nantinya akan menjalankan game tersebut dengan logika yang telah dibuat, berikut
script game pada bajaj tersebut :
LOGIKA
PADA PROGRAM
Pertama untuk membuat tampilan frame pada
game tersebut, dimana gambar tersebut dibuat menggunakan adobe illustrator
Gambar diatas menggunakan ukuran 400x700
berikut syntax yang diberikan di dalam python tersebut.
#ukuran frame yang digunakan
display_width = 400
display_height = 700
untuk menyisipkan gambar di python tersebut
agar gambar tersebut dapat digunakan dengan cara :
backintro =
pygame.image.load("bajaj.png").convert()
Langkah yang kedua memberikan button pada
gambar di dalam game tersebut berikut syntaxnya :
#variabel
warna
black =
(0,0,0)
white =
(255,255,255)
red = (255,0,0)
green =
(0,100,0)
blue = (100,149,237)
yellow =
(255,255,0)
gray = (211,211,211)
#kelap-kelip
bright_red
=(255,69,0)
bright_green
= (0,255,0)
bright_blue =
(135,206,250)
bright_yellow
= (238,221,130)
terdapat
warna hitam, putih, merah, hijau, biru, kuning dan abu-abu yang disaat button
itu di klik tulisan akan berkelap kelip.
Kemudian pada
gambar diatas terdapat 4 button yang di dalamnya terdapat button mulai, cara
bermain, tentang, keluar, dan reset highscore berikut syntax yang digunakan :
#buat
menampilkan button menu
def
game_intro():
intro = True
pygame.mixer.music.play(-1)
while intro:
for event in pygame.event.get():
#print(event)
if event.type == pygame.QUIT:
pygame.quit()
quit()
gameDisplay.blit(backintro, [0,0])
largeText =
pygame.font.SysFont("comicsansms",66)
TextSurf, TextRect =
text_objects("", largeText)
TextRect.center =
((display_width/2),(display_height/2))
gameDisplay.blit(TextSurf, TextRect)
button("Mulai!",50,450,100,50,blue,bright_blue,game_loop)
button("Keluar",250,550,100,50,blue,bright_blue,quit)
button("Tentang",250,450,100,50,blue,bright_blue,tntg)
button("Cara
Bermain",50,550,100,50,blue,bright_blue,cara)
button("Reset
Highscore!",20,-10,100,50,gray,bright_yellow,delscore)
disini warna
yang saya pakai hanya button biru saya karena saya menyesuaikan backround pada
gambar tersebut.
Langkah selanjutnya
kita membuat sricpt pada button play, reset score dan keluar berikut syntaxnya
:
#membuat
fungsi button menu
def
button(msg,x,y,w,h,ic,ac,action=None):
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if x+w > mouse[0] > x and y+h >
mouse[1] > y:
pygame.draw.rect(gameDisplay,
ac,(x,y,w,h))
if click[0] == 1 and action != None:
action()
else:
pygame.draw.rect(gameDisplay,
ic,(x,y,w,h))
smallText =
pygame.font.SysFont("comicsansms",12)
textSurf, textRect = text_objects(msg,
smallText)
textRect.center = ( (x+(w/2)), (y+(h/2)) )
gameDisplay.blit(textSurf, textRect)
Kemudian script pada tombol action reset score dan exit,
dimana reset score berfungsi untuk menghapus script sebelumnya menjadi mulai
dari 0 .
#reset score
def delscore():
variabel = open("score.txt",
"w")
variabel.write("0")
variabel.close()
def text_objects(text, font):
textSurface = font.render(text, True, black)
return textSurface, textSurface.get_rect()
#untuk menulis data baru ke data score
if hindar>values:
print ("hindar : ",hindar)
print ("masuk nilai baru")
with
open("score.txt","r+") as score:
with
open("score.txt","r") as newScore:
for line in newScore:
output = str(hindar)
print (output)
score.writelines(line.replace(output2,output))
#exit pada game
pygame.quit()
quit()
langkah
berikutnya menampilkan 3 objek pada game tersebut dimana game tersebut terdapat
1 buah bajaj, 1 buah mobil, dan 1 buah jalan raya berikut syntaxnya :
#objek kotak
jadi mobil
def
things(thingx, thingy, thingw, thingh, color):
#pygame.draw.rect(gameDisplay, color,
[thingx, thingy, thingw, thingh])
gameDisplay.blit(car2Img, (thingx, thingy))
#nampilin
mobil
def car(x,y):
gameDisplay.blit(carImg,(x,y))
#background
background =
pygame.image.load("jalanannn.png").convert()
backintro =
pygame.image.load("bajaj.png").convert()
carImg =
pygame.image.load('bajaiii.png')
car2Img =
pygame.image.load('mobil.png')
langkah
selanjutnya membuat fungsi berpindah dari kanan dan kekiri supaya objek
tersebut tidak menabrak berikut syntaxnya:
# saat
terkena pinggiran tetapi bukan AI muncul pesan crash()
if x > display_width - car_width or
x < 0:
crash()
if thing_starty > display_height:
thing_starty = 0 - thing_height
thing_startx =
random.randrange(0,display_width)
hindar +=1
pygame.mixer.Sound.play(sound3)
thing_speed += (hindar * 0.01)
#thing_width += (hindar * 1.0)
if y < thing_starty+thing_height:
print('y crossover')
print("nilai hindar
:",hindar)
data =
open("score.txt","r")
for value in data:
values = int(value.strip())
output2 = str(values)
print (values)
if hindar>values:
print ("hindar :
",hindar)
print ("masuk nilai
baru")
with
open("score.txt","r+") as score:
with
open("score.txt","r") as newScore:
for line in newScore:
output =
str(hindar)
print (output)
score.writelines(line.replace(output2,output))
if x > thing_startx and x <
thing_startx + thing_width or x+car_width > thing_startx and x + car_width
< thing_startx+thing_width:
print('x crossover')
data =
open("score.txt","r")
for value in data:
values = int(value.strip())
output2 = str(values)
print (values)
langkah
selanjutnya menampilkan pesan nabrak pada game tersebut beriku syntaxnya :
# fungsi game
over
def
message_display(text):
largeText =
pygame.font.Font('freesansbold.ttf',50)
TextSurf, TextRect = text_objects(text,
largeText)
TextRect.center =
((display_width/2),(display_height/2))
gameDisplay.blit(TextSurf, TextRect)
pygame.display.update()
time.sleep(2)
game_loop()
#ketika crash
memunculkan pesan
def crash():
pygame.mixer.Sound.stop(sound)
pygame.mixer.Sound.stop(sound2)
pygame.mixer.Sound.play(crash_sound)
message_display('NABRAKK')
jika bajaj
terkena lintasan ke kiri maupun ke kanan maka akan muncul game over
OUTPUT PADA GAME BAJAJ
KESIMPULAN
Peran AI dalam game bajaj ini akan selalu menghalangi perjalanan
bajaj untuk mendapatkan score tertinggi.
Selain itu pemain juga akan dipersulit dengan tidak menyentuh atau menabrak
objek rintangan berupa mobil dengan rintangannya dan juga garis batasan pada
tepi pinggir. Untuk itu dibutuhkan dalam game ini adalah kecekatan dalam
menghindari dan melewati objek rintangan berupa mobil.
game akan terhenti apabila charater Icon pemain yang kita
kendalikan menyentuh atau menabrak objek rintangan berupa mobil, namun ketika
charater Icon pemain yang kita kendalikan melewati objek rintangan berupa
pesawat maka game akan mendapatkan nilai score.
SARAN
Pada game “Bajaj Racing” ini masih banyak kekurangan. game ini
dapat ditambahkan objek jalanan yang bergera, kemudian dapat ditambahkan stop
dan resume pada game tersebut karena di game ini tidak ada tombol/button play
dan resume. Dengan demikian penulis berharap agar game ini bisa dikembangkan
lagi