Tentu kita pernah memainkan game ular pada saat kecil, mungkin anak-anak 90an pada masanya menggunakan HP nokia ya hehe. Dalam kesempatan kali ini saya akan membagikan “Bagaimana cara membuat game ular dengan python”.
Saya asumsikan kalian sudah paham tentang dasar-dasar python. Dan pastikan di laptop kalian sudah terinstall python ya, disini penulis menggunakan python version 3.8 dan sudah terinstall pip.
Sebelum kita memulai, berikut ini adalah list materi yang akan kita bahas :
Install Pygame
Membuat Layar
Membuat Ular
Menggerakan ular
Menambahkan game over
Membuat Makanan
Menambah panjang ular
Menambahkan Score
Install Pygame
Langkah pertama yang perlu dilakukan adalah install pygame dengan perintah :
pip install pygame
Sebelum melakukan coding game ular, berikut ini adalah sedikit penjelasan beberapa fungsi yang digunakan di dalam coding .
- init() : Digunakan untuk melakukan inisialisasi modul pygame.
- display.set_mode() : Digunakan untuk melakukan set tupple parameter
- update() : Digunakan untuk update screen
- quit() : Digunakan untuk Uninitialize program
- set_caption() : Digunakan untuk set caption di header
- event.get() : Mengembalikan list semua event
- Surface.fill() : Digunakan untuk merubah warna
- time.Clock() : Untuk melakukan timer
- font.SysFont() : Digunakan untuk set font
importpygamepygame.init()dis=pygame.display.set_mode((400,300))pygame.display.update()pygame.quit()quit()
importpygamepygame.init()dis=pygame.display.set_mode((400,300))pygame.display.update()pygame.display.set_caption('Snake game by Edureka')game_over=Falsewhilenotgame_over:foreventinpygame.event.get():(event)#prints out all the actions that take place on the screenpygame.quit()quit()
Sekarang layar sudah selesai dibuat, langkah selanjutnya adalah membuat objek ular nya.
Membuat Ular
Untuk membuat ular, pertama-tama saya akan menginisialisasi beberapa variabel warna untuk mewarnai ular, makanan, layar, dll. Skema warna yang digunakan di Pygame adalah RGB yaitu “Red Green Blue”. Jika Anda menyetel semua ini ke 0, warnanya akan menjadi hitam dan semua 255 akan menjadi putih. Jadi ular kita akan menjadi persegi panjang. Untuk menggambar persegi panjang di Pygame, Anda bisa menggunakan fungsi bernama draw.rect() yang akan membantu Anda menggambar persegi panjang dengan warna dan ukuran yang diinginkan.
importpygamepygame.init()dis=pygame.display.set_mode((400,300))pygame.display.set_caption('Snake game by Edureka')blue=(0,0,255)red=(255,0,0)game_over=Falsewhilenotgame_over:foreventinpygame.event.get():ifevent.type==pygame.QUIT:game_over=Truepygame.draw.rect(dis,blue,[200,150,10,10])pygame.display.update()pygame.quit()quit()
OUTPUT :
Menggerakan ular
Untuk menggerakan ular dapat menggunakan event KEYDOWN yang ada di pygame class. Event yang digunakan disini adalah K_UP,K_DOWN,K_RIGHT, dan K_LEFT untuk membuat ular bergerak keatas, kebawah, kekanan dan kekiri.
importpygamepygame.init()white=(255,255,255)black=(0,0,0)red=(255,0,0)dis=pygame.display.set_mode((800,600))pygame.display.set_caption('Snake Game by Edureka')game_over=Falsex1=300y1=300x1_change=0y1_change=0clock=pygame.time.Clock()whilenotgame_over:foreventinpygame.event.get():ifevent.type==pygame.QUIT:game_over=Trueifevent.type==pygame.KEYDOWN:ifevent.key==pygame.K_LEFT:x1_change=-10y1_change=0elifevent.key==pygame.K_RIGHT:x1_change=10y1_change=0elifevent.key==pygame.K_UP:y1_change=-10x1_change=0elifevent.key==pygame.K_DOWN:y1_change=10x1_change=0x1+=x1_changey1+=y1_changedis.fill(white)pygame.draw.rect(dis, black, [x1, y1,10,10])pygame.display.update()clock.tick(30)pygame.quit()quit()
Menambahkan game over
Dalam permainan ular ini, jika pemain mengenai batas layar, maka dia kalah. Untuk menentukannya, saya telah menggunakan pernyataan 'if' yang menentukan batas koordinat x dan y ular menjadi kurang dari atau sama dengan layar. Juga, perhatikan di sini bahwa saya telah menghapus hardcode dan menggunakan variabel sebagai gantinya sehingga menjadi mudah jika Anda ingin membuat perubahan apa pun pada game nanti.
importpygameimporttimepygame.init()white=(255,255,255)black=(0,0,0)red=(255,0,0)dis_width=800dis_height=600dis=pygame.display.set_mode((dis_width, dis_width))pygame.display.set_caption('Snake Game by Edureka')game_over=Falsex1=dis_width/2y1=dis_height/2snake_block=10x1_change=0y1_change=0clock=pygame.time.Clock()snake_speed=30font_style=pygame.font.SysFont(None,50)defmessage(msg,color):mesg=font_style.render(msg,True, color)dis.blit(mesg, [dis_width/2, dis_height/2])whilenotgame_over:foreventinpygame.event.get():ifevent.type==pygame.QUIT:game_over=Trueifevent.type==pygame.KEYDOWN:ifevent.key==pygame.K_LEFT:x1_change=-snake_blocky1_change=0elifevent.key==pygame.K_RIGHT:x1_change=snake_blocky1_change=0elifevent.key==pygame.K_UP:y1_change=-snake_blockx1_change=0elifevent.key==pygame.K_DOWN:y1_change=snake_blockx1_change=0ifx1 >=dis_widthorx1 <0ory1 >=dis_heightory1 <0:game_over=Truex1+=x1_changey1+=y1_changedis.fill(white)pygame.draw.rect(dis, black, [x1, y1, snake_block, snake_block])pygame.display.update()clock.tick(snake_speed)message("You lost",red)pygame.display.update()time.sleep(2)pygame.quit()quit()
Membuat makanan
Di sini, saya akan menambahkan beberapa makanan untuk ular itu dan ketika ular itu melintasi makanan itu, saya akan membuat pesan di console yang berbunyi “Yummy!!”. Selain itu, saya akan membuat perubahan kecil di mana saya akan menyertakan opsi untuk keluar dari game atau bermain lagi saat pemain kalah.
importpygameimporttimeimportrandompygame.init()white=(255,255,255)black=(0,0,0)red=(255,0,0)blue=(0,0,255)dis_width=800dis_height=600dis=pygame.display.set_mode((dis_width, dis_height))pygame.display.set_caption('Snake Game by Edureka')clock=pygame.time.Clock()snake_block=10snake_speed=30font_style=pygame.font.SysFont(None,30)defmessage(msg, color):mesg=font_style.render(msg,True, color)dis.blit(mesg, [dis_width/3, dis_height/3])defgameLoop():# creating a functiongame_over=Falsegame_close=Falsex1=dis_width/2y1=dis_height/2x1_change=0y1_change=0foodx=round(random.randrange(0, dis_width-snake_block)/10.0)*10.0foody=round(random.randrange(0, dis_width-snake_block)/10.0)*10.0whilenotgame_over:whilegame_close==True:dis.fill(white)message("You Lost! Press Q-Quit or C-Play Again", red)pygame.display.update()foreventinpygame.event.get():ifevent.type==pygame.KEYDOWN:ifevent.key==pygame.K_q:game_over=Truegame_close=Falseifevent.key==pygame.K_c:gameLoop()foreventinpygame.event.get():ifevent.type==pygame.QUIT:game_over=Trueifevent.type==pygame.KEYDOWN:ifevent.key==pygame.K_LEFT:x1_change=-snake_blocky1_change=0elifevent.key==pygame.K_RIGHT:x1_change=snake_blocky1_change=0elifevent.key==pygame.K_UP:y1_change=-snake_blockx1_change=0elifevent.key==pygame.K_DOWN:y1_change=snake_blockx1_change=0ifx1 >=dis_widthorx1 <0ory1 >=dis_heightory1 <0:game_close=Truex1+=x1_changey1+=y1_changedis.fill(white)pygame.draw.rect(dis, blue, [foodx, foody, snake_block, snake_block])pygame.draw.rect(dis, black, [x1, y1, snake_block, snake_block])pygame.display.update()ifx1==foodxandy1==foody:("Yummy!!")clock.tick(snake_speed)pygame.quit()quit()gameLoop()
OUTPUT :
Menambah panjang ular
Kode berikut akan menambah ukuran ular kita saat memakan makanan. Juga, jika ular bertabrakan dengan tubuhnya sendiri, permainan berakhir dan Anda akan melihat pesan sebagai “You Lost! Press C-Play Again or Q-Quit“. Panjang ular pada dasarnya terdapat dalam daftar dan ukuran awal yang ditentukan dalam kode berikut adalah satu blok.
importpygameimporttimeimportrandompygame.init()white=(255,255,255)yellow=(255,255,102)black=(0,0,0)red=(213,50,80)green=(0,255,0)blue=(50,153,213)dis_width=600dis_height=400dis=pygame.display.set_mode((dis_width, dis_height))pygame.display.set_caption('Snake Game by Edureka')clock=pygame.time.Clock()snake_block=10snake_speed=15font_style=pygame.font.SysFont("bahnschrift",25)score_font=pygame.font.SysFont("comicsansms",35)defour_snake(snake_block, snake_list):forxinsnake_list:pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])defmessage(msg, color):mesg=font_style.render(msg,True, color)dis.blit(mesg, [dis_width/6, dis_height/3])defgameLoop():game_over=Falsegame_close=Falsex1=dis_width/2y1=dis_height/2x1_change=0y1_change=0snake_List=[]Length_of_snake=1foodx=round(random.randrange(0, dis_width-snake_block)/10.0)*10.0foody=round(random.randrange(0, dis_height-snake_block)/10.0)*10.0whilenotgame_over:whilegame_close==True:dis.fill(blue)message("You Lost! Press C-Play Again or Q-Quit", red)pygame.display.update()foreventinpygame.event.get():ifevent.type==pygame.KEYDOWN:ifevent.key==pygame.K_q:game_over=Truegame_close=Falseifevent.key==pygame.K_c:gameLoop()foreventinpygame.event.get():ifevent.type==pygame.QUIT:game_over=Trueifevent.type==pygame.KEYDOWN:ifevent.key==pygame.K_LEFT:x1_change=-snake_blocky1_change=0elifevent.key==pygame.K_RIGHT:x1_change=snake_blocky1_change=0elifevent.key==pygame.K_UP:y1_change=-snake_blockx1_change=0elifevent.key==pygame.K_DOWN:y1_change=snake_blockx1_change=0ifx1 >=dis_widthorx1 <0ory1 >=dis_heightory1 <0:game_close=Truex1+=x1_changey1+=y1_changedis.fill(blue)pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])snake_Head=[]snake_Head.append(x1)snake_Head.append(y1)snake_List.append(snake_Head)iflen(snake_List) > Length_of_snake:delsnake_List[0]forxinsnake_List[:-1]:ifx==snake_Head:game_close=Trueour_snake(snake_block, snake_List)pygame.display.update()ifx1==foodxandy1==foody:foodx=round(random.randrange(0, dis_width-snake_block)/10.0)*10.0foody=round(random.randrange(0, dis_height-snake_block)/10.0)*10.0Length_of_snake+=1clock.tick(snake_speed)pygame.quit()quit()gameLoop()
OUTPUT :
Menambahkan Score
Terakhir tetapi tidak kalah pentingnya, Anda harus menampilkan skor pemain. Untuk melakukan ini, saya telah membuat fungsi baru sebagai “Your_score”. Fungsi ini akan menampilkan panjang ular dikurangi 1 karena itu adalah ukuran awal ular.
importpygameimporttimeimportrandompygame.init()white=(255,255,255)yellow=(255,255,102)black=(0,0,0)red=(213,50,80)green=(0,255,0)blue=(50,153,213)dis_width=600dis_height=400dis=pygame.display.set_mode((dis_width, dis_height))pygame.display.set_caption('Snake Game by Edureka')clock=pygame.time.Clock()snake_block=10snake_speed=15font_style=pygame.font.SysFont("bahnschrift",25)score_font=pygame.font.SysFont("comicsansms",35)defYour_score(score):value=score_font.render("Your Score: "+str(score),True, yellow)dis.blit(value, [0,0])defour_snake(snake_block, snake_list):forxinsnake_list:pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])defmessage(msg, color):mesg=font_style.render(msg,True, color)dis.blit(mesg, [dis_width/6, dis_height/3])defgameLoop():game_over=Falsegame_close=Falsex1=dis_width/2y1=dis_height/2x1_change=0y1_change=0snake_List=[]Length_of_snake=1foodx=round(random.randrange(0, dis_width-snake_block)/10.0)*10.0foody=round(random.randrange(0, dis_height-snake_block)/10.0)*10.0whilenotgame_over:whilegame_close==True:dis.fill(blue)message("You Lost! Press C-Play Again or Q-Quit", red)Your_score(Length_of_snake-1)pygame.display.update()foreventinpygame.event.get():ifevent.type==pygame.KEYDOWN:ifevent.key==pygame.K_q:game_over=Truegame_close=Falseifevent.key==pygame.K_c:gameLoop()foreventinpygame.event.get():ifevent.type==pygame.QUIT:game_over=Trueifevent.type==pygame.KEYDOWN:ifevent.key==pygame.K_LEFT:x1_change=-snake_blocky1_change=0elifevent.key==pygame.K_RIGHT:x1_change=snake_blocky1_change=0elifevent.key==pygame.K_UP:y1_change=-snake_blockx1_change=0elifevent.key==pygame.K_DOWN:y1_change=snake_blockx1_change=0ifx1 >=dis_widthorx1 <0ory1 >=dis_heightory1 <0:game_close=Truex1+=x1_changey1+=y1_changedis.fill(blue)pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])snake_Head=[]snake_Head.append(x1)snake_Head.append(y1)snake_List.append(snake_Head)iflen(snake_List) > Length_of_snake:delsnake_List[0]forxinsnake_List[:-1]:ifx==snake_Head:game_close=Trueour_snake(snake_block, snake_List)Your_score(Length_of_snake-1)pygame.display.update()ifx1==foodxandy1==foody:foodx=round(random.randrange(0, dis_width-snake_block)/10.0)*10.0foody=round(random.randrange(0, dis_height-snake_block)/10.0)*10.0Length_of_snake+=1clock.tick(snake_speed)pygame.quit()quit()gameLoop()
OUTPUT :
Dengan ini kita telah menyelesaikan sebuah game ular dengan python. Saya harap artikel ini berguna untuk teman - teman yang sedang belajar membuat game. JIka ada hal yang kurang jelas, silahkan tinggalkan komentar.









No comments: