Kamis, 19 Juli 2018

GAME BAJAJ RACING BERGENRE ARCADE MENGGUNAKAN APLIKASI PADA PYTHON 2.7.11


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


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

Share: