DAFTAR ISI
DAFTAR ISI ………………………………………………………..… 1
BAB I PENDAHULUAN
1.1
Latar
Belakang ……………………………….. 2
1.2
Maksud dan
Tujuan ………………………...... 3
1.3
Tempat dan Waktu
Penelitian … …………..… 4
1.4
Sistematika
Pembuatan Laporan …………..… 5
BAB II ISI
2.1
Bahasa
Pemrograman Python ……………….. 6
2.2
Perbedaan
Python dengan Pascal
dan Keunggulannya ….……………………….… 6
2.3
Program
Aplikasi Game Space Shooter.……..… 7
2.4
Script
Program Aplikasi Game Space Shooter… 7
BAB III PENUTUP
3.1
Kesimpulan ………………………..…………… 29
3.2
Saran ………………………………..………….. 29
BAB I
PENDAHULUAN
1.1
Latar
Belakang
Maraknya
penggunaan computer di berbagai bidang kehidupan manusia, menuntut setiap orang
untuk mengetahui dan mempelajari berbagai macam software pendukung yang dapat
beroperasi pada computer tersebut. Computer merupakan salah satu penemuan
tercanggih pada abad ini. Computer merupakan cikal bakal lahirnya teknologi
baru di bidang Ilmu Pengetahuan dan Teknologi.
Kemampuan
computer dalam melakukan penghitungan yang sangat cepat, dapat mempermudah
manusia atau user dalam mengoperasikannya. Berbagai macam media pendukung untuk
mengoptimalkan kinerja computer banyak dibuat. Media tersebut berupa software
atau program aplikasi yang hubungannya tidak dapat terpisahkan dari computer.
Software
atau program aplikasi tersebut dibangun dengan menggunakan software lain.
Banyak software yang digunakan untuk membangun software atau program aplikasi.
Salah satunya bahasa pemrograman (programming
language). Bahasa pemrograman pun memiliki beberapa tingkatan, disesuaikan
dengan kemudahan akses yang dilakukan oleh computer.
Dalam
laporan kali ini, penyusun telah membangun program aplikasi kecil dengan
menggunakan salah satu bahasa pemrograman, yaitu Bahasa Pemrograman Python.
Lapoaran ini disusun untuk memberikan sedikit gambaran kepada masyarakat
tentang Bahasa Pemrograman Python, mengingat bahasa pemrograman ini masih
sangat jarang digunakan dan kalah terkenal dengan Bahasa Pemrograman Pascal.
Penyusun mencoba untuk membangun Program Aplikasi Game Space Shooter yang dapat
diterapkan di berbagai perusahaan dengan menggunakan Bahasa Pemrograman Python.
1.2
Maksud dan
Tujuan
Penyusun
memiliki maksud dan tujuan dalam penyusunan laporan ini. Berikut maksud dan
tujuannya:
1.2.1
Maksud
Maksud dari penyusunan laporan ini adalah sebagai berikut:
·
Mengetahui proses dalam penggunaan Bahasa
Pemrograman Python.
·
Sebagai sarana pembelajaran bagi kami, Mahasiswa
Ilmu Komputer, dalam mengaplikasikan ilmu yang tidak diperoleh pada
pembelajaran formal pada umumnya.
·
Sebagai bahan referensi bagi mahasiswa lainnya
dalam mengembangkan dan membangun program aplikasi dengan menggunakan Bahasa
Pemrograman Python.
1.2.2
Tujuan
Hal apapun yang dilakukan
tentu memiliki tujuan/goals yang ingin diraih. Begitupun dalam pembuatan
program aplikasi ini. Tujuan yang ingin diraih, yaitu:
·
Diperoleh pengetahuan tentang penggunaan Bahasa
Pemrograman Python beserta struktur syntax
yang terdapat didalamnya serta perbedaan dengan Bahasa Pemrograman Pascal.
·
Menerapkan Bahasa Pemrograman Python sebagai
bahasa pemrograman yang digunakan dalam pembangunan software atau program
aplikasi berikutnya.
1.3
Lokasi dan Waktu
Penelitian
1.3.1
Lokasi
Penelitian
Pembuatan Program Aplikasi Game Space Shooter bukanlah program dengan
melibatkan banyak orang dalam pembuatannya. Program aplikasi ini masih dalam
taraf kecil karena keterbatasan berbagai sumber yang sulit untuk diperoleh oleh
penyusun. Salah satu sumber tersebut diantaranya sumber data dan informasi
mengenai Bahasa Pemrograman Python, mengingat sumber tersebut masih banyak
menggunakan bahasa asing.
Sehingga, lokasi penelitian pun penyusun persempit yaitu hanya di
lingkungan universitas saja dengan melakukan diskusi dengan sesama Mahasiswa
Fakultas Tehnik Informatika. Diskusi tersebut dilakukan untuk mengetahui
program aplikasi apa saja yang kiranya dapat dengan mudah diterapkan pada
Bahasa Pemrograman Python. Akhirnya, ide pembuatan Program Aplikasi Game Space
Shooter pun penyusun peroleh dari hasil diskusi tersebut.
1.3.2
Waktu
Penelitian
Waktu yang diperlukan dalam pembuatan aplikasi ini relatif singkat, untuk
lebih jelasnya berikut bagan dari waktu penelitian yang telah penyusun lakukan.
No.
|
Kegiatan
|
Waktu
|
|||||||||||||
JUNI
2015
|
|||||||||||||||
Minggu
I
|
Minggu
II
|
||||||||||||||
1.
|
Pengumpulan Data
|
||||||||||||||
2.
|
Analisis
|
||||||||||||||
3.
|
Design
|
||||||||||||||
4.
|
Implementasi
|
||||||||||||||
5.
|
Testing & Evaluasi
|
||||||||||||||
Tabel
1.3 Waktu Penelitian
1.4
Sistematika
Pembuatan Laporan
BAB I Pendahuluan
Berisi latar
belakang, maksud dan tujuan, lokasi dan waktu penelitian, dan sisetmatika
pembuatan laporan.
BAB II Pembangunan
Program Aplikasi Menggunakan Python
Berisi Bahasa
Pemrograman Python, Perbedaan Python dengan Pascal dan Keunggulannya, Program
Aplikasi Game Space Shooter, Interface Design Program Aplikasi Game
Space Shooter
BAB III Penutup
Berisi kesimpulan
dari isi laporan yang telah disusun dan saran yang diberikan terhadap isi dari
laporan tersebut.
BAB II
PEMBANGUNAN PROGRAM APLIKASI
MENGGUNAKAN PYTHON
2.1
Bahasa
Pemrograman Python
Python adalah bahasa pemograman yang mampu berjalan di
berbagai sistem operasi dan di berbagai arsitektur komputer. Bahasa pemograman
ini termasuk salah satu bahasa pemograman tingkat tinggi dan object oriented layaknya C++ dan java.
Python merupakan bahasa pemograman yang bersifat interpreter (save dan run). Bahasa
pemograman ini juga dapat digabungkan dengan bahasa pemograman yang lain.
Seperti java, C, C++, Bash, dan lain-lain.
2.2
Perbedaan
Python dengan Pascal dan Keunggulannya
Banyak keunggulan yang dimiliki python, salah satunya
adalah mempunyai sintaks yang singkat. Tidak perlu berbasa-basi dalam
menuliskan program. Sebagai contoh, untuk membuat program yang menampilkan
segitiga dapat dilakukan hanya dalam beberapa baris seperti di bawah.
>>> for i in range(3):
... print "#" * (i+1)
... print "#" * (i+1)
Bandingkanlah dengan program yang ditulis menggunakan Pascal:
var i, j : byte ;
begin
for i:=1 to 3 do begin
for j:=1 to i do write('#');
end;
end.
var i, j : byte ;
begin
for i:=1 to 3 do begin
for j:=1 to i do write('#');
end;
end.
Kedua program di atas sama-sama menghasilkan output:
#
##
###
Akan tetapi, seperti yang dapat Anda lihat, dengan python Anda dapat menulis dengan lebih singkat. Python tidak memerlukan introduction variabel-variabel yang akan dipakai (seperti var pada Pascal). Sehingga Anda dapat meng-assign suatu variabel tanpa introduction terlebih dahulu.
Keunggulan lain yang dimiliki python adalah Anda dapat mencoba ide-ide Anda langsung pada Python Shell, tanpa harus di-compile terlebih dahulu. Hal ini sangat menghemat waktu yang digunakan.
##
###
Akan tetapi, seperti yang dapat Anda lihat, dengan python Anda dapat menulis dengan lebih singkat. Python tidak memerlukan introduction variabel-variabel yang akan dipakai (seperti var pada Pascal). Sehingga Anda dapat meng-assign suatu variabel tanpa introduction terlebih dahulu.
Keunggulan lain yang dimiliki python adalah Anda dapat mencoba ide-ide Anda langsung pada Python Shell, tanpa harus di-compile terlebih dahulu. Hal ini sangat menghemat waktu yang digunakan.
Untuk melakukan pengkodean python, Anda tidak harus menulis pada suatu program khusus. Anda dapat melakukannya dengan menggunakan text editor apapun. Cukup dengan menuliskan kode-kodenya dan kemudian di-save dengan menggunakan ekstensi .py. Anda juga dapat melakukan pengkodean pada suatu IDE (Integrated Development Environment) khusus python agar pengkodean jadi lebih mudah.
2.3
Program
Aplikasi Game Space Shooter
Program
Aplikasi Game Space Shooter merupakan program aplikasi yang dibangun khusus untuk
menghibur mengedukasi dan juga melihat potensi pada anak dalam segi hal reflex.
Program ini merupakan program game sederhana yang akan menghibur anak anda dimana
tidak merusak pola belajar dan juga merusak pola fikir, tidak ada tindak
kekerasan dan juga game ini sangat menghibur bagi semua kalangan karena mudah
untuk dimainkan.
2.4
Scripting Program Aplikasi Game Space
Shooter
,
diperoleh kode-kode yang dapat menampilkan antarmuka tersebut. Berikut
kode-kode atau script dari Program Game
Space Shooter.
#Import
import
os, sys, pygame, random
from
pygame.locals import *
os.environ['SDL_VIDEO_CENTERED']
= "1"
pygame.init()
pygame.display.set_caption("JOMBS
SHOOTER")
icon
= pygame.image.load("data/sprites/jombs.png")
icon
= pygame.display.set_icon(icon)
screen
= pygame.display.set_mode((800, 600))
pygame.mouse.set_visible(0)
#Background
background
= pygame.Surface(screen.get_size())
background
= background.convert()
background.fill((0,0,0))
#Music
music
= pygame.mixer.music.load ("data/music/Mars_gunadarma.ogg") #lost.ogg
pygame.mixer.music.play(-1)
#Load
Images
def
load_image(name, colorkey=None):
fullname = os.path.join('data', name)
try:
image = pygame.image.load(fullname)
except pygame.error message:
print 'Cannot load image:', fullname
raise SystemExit, message
image = image.convert()
if colorkey is not None:
if colorkey is -1:
colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()
#Load
Sounds
def
load_sound(name):
class NoneSound:
def play(self): pass
if not pygame.mixer or not
pygame.mixer.get_init():
return NoneSound()
fullname = os.path.join('data', name)
try:
sound = pygame.mixer.Sound(fullname)
except pygame.error, message:
print 'Cannot load sound:', fullname
raise SystemExit, message
return sound
#Sprites
#This
class controls the arena background
class
Arena(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect =
load_image("menu/gundar.jpg", -1)
self.dy = 5
self.reset()
def update(self):
self.rect.bottom += self.dy
if self.rect.bottom >= 1200:
self.reset()
def reset(self):
self.rect.top = -600
#Player
class
Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect =
load_image("sprites/jombs.png", -1)
self.rect.center = (400,500)
self.dx = 0
self.dy = 0
self.reset()
self.lasertimer = 0
self.lasermax = 5
self.bombamount = 1
self.bombtimer = 0
self.bombmax = 10
def
update(self):
self.rect.move_ip((self.dx, self.dy))
#Fire the laser
key = pygame.key.get_pressed()
if key[pygame.K_SPACE]:
self.lasertimer = self.lasertimer +
1
if self.lasertimer == self.lasermax:
laserSprites.add(Laser(self.rect.midtop))
fire.play()
self.lasertimer = 0
#Fire the bomb
if key[pygame.K_LCTRL]:
self.bombtimer = self.bombtimer + 1
if
self.bombtimer == self.bombmax:
self.bombtimer = 0
if self.bombamount > 0:
self.bombamount =
self.bombamount -1
score.bomb += -1
bombSprites.add(Bomb(self.rect.midtop))
torpedo.play()
#Player Boundaries
if self.rect.left < 0:
self.rect.left = 0
elif self.rect.right > 800:
self.rect.right = 800
if self.rect.top <= 260:
self.rect.top = 260
elif self.rect.bottom >= 600:
self.rect.bottom = 600
def reset(self):
self.rect.bottom = 600
#Laser
class
class
Laser(pygame.sprite.Sprite):
def __init__(self, pos):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect =
load_image("sprites/sabun.png", -1)
self.rect.center = pos
def update(self):
if self.rect.top < 0:
self.kill()
else:
self.rect.move_ip(0, -15)
#Bomb
class
class
Bomb(pygame.sprite.Sprite):
def __init__(self, pos):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect =
load_image("sprites/attack.png", -1)
self.rect.center = pos
def update(self):
if self.rect.top < 0:
self.kill()
else:
self.rect.move_ip(0, -5)
if pygame.sprite.groupcollide(enemySprites,
bombSprites, 1, 1):
bombExplosionSprites.add(BombExplosion(self.rect.center))
explode.play()
#Laser
class
class
EnemyLaser(pygame.sprite.Sprite):
def __init__(self, pos):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect =
load_image("sprites/elaser.png", -1)
self.rect.center = pos
def update(self):
if self.rect.bottom < 0:
self.kill()
else:
self.rect.move_ip(0, 15)
#Enemy
class
class
Enemy(pygame.sprite.Sprite):
def __init__(self, centerx):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect =
load_image("sprites/troll.png", -1)
self.rect = self.image.get_rect()
self.dy = 8
self.reset()
def update(self):
self.rect.centerx += self.dx
self.rect.centery += self.dy
if self.rect.top >
screen.get_height():
self.reset()
#random 1 - 60 determines if firing
efire = random.randint(1,60)
if efire == 1:
enemyLaserSprites.add(EnemyLaser(self.rect.midbottom))
efire =
load_sound("sounds/elaser.ogg")
efire.play()
#Laser Collisions
if
pygame.sprite.groupcollide(enemySprites, laserSprites, 1, 1):
explosionSprites.add(EnemyExplosion(self.rect.center))
explode.play()
score.score += 10
#Bomb Collisions
if pygame.sprite.groupcollide(enemySprites,
bombSprites, 1, 1):
bombExplosionSprites.add(BombExplosion(self.rect.center))
explode.play()
score.score += 10
#Bomb Explosion Collisions
if pygame.sprite.groupcollide(enemySprites,
bombExplosionSprites, 1, 0):
explosionSprites.add(EnemyExplosion(self.rect.center))
explode.play()
score.score += 10
def reset(self):
self.rect.bottom = 0
self.rect.centerx = random.randrange(0,
screen.get_width())
self.dy = random.randrange(5, 10)
self.dx = random.randrange(-2, 2)
class
Shield(pygame.sprite.Sprite):
def __init__(self, pos):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect =
load_image("sprites/shield.png", -1)
self.rect.center = pos
self.counter = 0
self.maxcount = 2
def update(self):
self.counter = self.counter + 1
if self.counter == self.maxcount:
self.kill()
class
EnemyExplosion(pygame.sprite.Sprite):
def __init__(self, pos):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect =
load_image("sprites/greatjob.png", -1)
self.rect.center = pos
self.counter = 0
self.maxcount = 10
def update(self):
self.counter = self.counter + 1
if self.counter == self.maxcount:
self.kill()
class
BombExplosion(pygame.sprite.Sprite):
def __init__(self, pos):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect =
load_image("sprites/bombexplosion.png", -1)
self.rect.center = pos
self.counter = 0
self.maxcount = 5
def update(self):
self.counter = self.counter + 1
if self.counter == self.maxcount:
self.kill()
#Bomb
Powerup
class
BombPowerup(pygame.sprite.Sprite):
def __init__(self, centerx):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect = load_image("sprites/torpedopowerup.png",
-1)
self.rect = self.image.get_rect()
self.rect.centerx = random.randrange(0,
screen.get_width())
def update(self):
if self.rect.top >
screen.get_height():
self.kill
else:
self.rect.move_ip(0, 6)
#Shield
Powerup
class
ShieldPowerup(pygame.sprite.Sprite):
def __init__(self, centerx):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect =
load_image("sprites/love.png", -1)
self.rect = self.image.get_rect()
self.rect.centerx = random.randrange(0,
screen.get_width())
def update(self):
if self.rect.top >
screen.get_height():
self.kill
else:
self.rect.move_ip(0, 6)
class
Score(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.shield = 100
self.score = 0
self.bomb = 1
self.font =
pygame.font.Font("data/fonts/arial.ttf", 28)
def update(self):
self.text = "Tameng: %d Nilai: %d Torpedo: %d" %
(self.shield, self.score, self.bomb)
self.image =
self.font.render(self.text, 1, (0, 255, 0))
self.rect = self.image.get_rect()
self.rect.center = (390,10)
class
Gameover(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.font =
pygame.font.Font("data/fonts/planet5.ttf", 48)
def update(self):
self.text = "SELAMAT JOMBS KAMU
FOREVER ALONE"
self.text = ("MAMPUS MATI")
self.image =
self.font.render(self.text, 1, (0, 255, 0))
self.rect = self.image.get_rect()
self.rect.center = (400,300)
class
Gameoveresc(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.font =
pygame.font.Font("data/fonts/arial.ttf", 28)
def update(self):
self.text = "PENCET ESC UNTUK
KEMBALI"
self.image =
self.font.render(self.text, 1, (0, 255, 0))
self.rect = self.image.get_rect()
self.rect.center = (400,400)
#Game
Module
def
game():
#Game Objects
global player
player = Player()
global score
score = Score()
global fire
fire =
load_sound("sounds/laser.ogg")
global explode
explode =
load_sound("sounds/explode.ogg")
global torpedo
torpedo =
load_sound("sounds/torpedo.ogg")
global powerup
powerup =
load_sound("sounds/powerup.ogg")
#Game Groups
#Player/Enemy
playerSprite =
pygame.sprite.RenderPlain((player))
global enemySprites
enemySprites =
pygame.sprite.RenderPlain(())
enemySprites.add(Enemy(200))
enemySprites.add(Enemy(300))
enemySprites.add(Enemy(400))
#Projectiles
global laserSprites
laserSprites =
pygame.sprite.RenderPlain(())
global bombSprites
bombSprites = pygame.sprite.RenderPlain(())
global enemyLaserSprites
enemyLaserSprites =
pygame.sprite.RenderPlain(())
#Powerups
global bombPowerups
bombPowerups =
pygame.sprite.RenderPlain(())
global shieldPowerups
shieldPowerups =
pygame.sprite.RenderPlain(())
#Special FX
shieldSprites =
pygame.sprite.RenderPlain(())
global explosionSprites
explosionSprites =
pygame.sprite.RenderPlain(())
global bombExplosionSprites
bombExplosionSprites =
pygame.sprite.RenderPlain(())
#Score/and game over
scoreSprite = pygame.sprite.Group(score)
gameOverSprite =
pygame.sprite.RenderPlain(())
#Arena
arena = Arena()
arena = pygame.sprite.RenderPlain((arena))
#Set Clock
clock = pygame.time.Clock()
keepGoing = True
counter = 0
#Main Loop
while keepGoing:
clock.tick(30)
#input
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
elif event.type == pygame.KEYDOWN:
if event.key ==
pygame.K_ESCAPE:
keepGoing = False
elif event.key ==
pygame.K_LEFT:
player.dx = -10
elif event.key == K_RIGHT:
player.dx = 10
elif event.key == K_UP:
player.dy = -10
elif event.key == K_DOWN:
player.dy = 10
elif event.type == KEYUP:
if event.key == K_LEFT:
player.dx = 0
elif event.key == K_RIGHT:
player.dx = 0
elif event.key == K_UP:
player.dy = 0
elif event.key == K_DOWN:
player.dy = 0
#Update and draw on the screen
#Update
screen.blit(background, (0,0))
playerSprite.update()
enemySprites.update()
laserSprites.update()
bombSprites.update()
enemyLaserSprites.update()
bombPowerups.update()
shieldPowerups.update()
shieldSprites.update()
explosionSprites.update()
bombExplosionSprites.update()
arena.update()
scoreSprite.update()
gameOverSprite.update()
#Draw
arena.draw(screen)
playerSprite.draw(screen)
enemySprites.draw(screen)
laserSprites.draw(screen)
bombSprites.draw(screen)
enemyLaserSprites.draw(screen)
bombPowerups.draw(screen)
shieldPowerups.draw(screen)
shieldSprites.draw(screen)
explosionSprites.draw(screen)
bombExplosionSprites.draw(screen)
scoreSprite.draw(screen)
gameOverSprite.draw(screen)
pygame.display.flip()
#Spawn new enemies
counter += 1
if counter >= 20:
enemySprites.add(Enemy(300))
counter = 0
#Spawn Shield Power up
#shieldPowerupcounter += 1
spawnShieldpowerup = random.randint(1,500)
if spawnShieldpowerup == 1:
shieldPowerups.add(ShieldPowerup(300))
#Spawn Bomb Power up
spawnBombpowerup = random.randint(1,500)
if spawnBombpowerup == 1:
bombPowerups.add(BombPowerup(300))
bombPowerupcounter = 0
#Check if enemy lasers hit player's
ship
for hit in
pygame.sprite.groupcollide(enemyLaserSprites, playerSprite, 1, 0):
explode.play()
explosionSprites.add(Shield(player.rect.center))
score.shield -= 10
if score.shield <= 0:
gameOverSprite.add(Gameover())
gameOverSprite.add(Gameoveresc())
playerSprite.remove(player)
#Check if enemy collides with player
for hit in
pygame.sprite.groupcollide(enemySprites, playerSprite, 1, 0):
explode.play()
explosionSprites.add(Shield(player.rect.center))
score.shield -= 10
if score.shield <= 0:
gameOverSprite.add(Gameover())
gameOverSprite.add(Gameoveresc())
playerSprite.remove(player)
#Check if player collides with shield
powerup
for hit in pygame.sprite.groupcollide(shieldPowerups,
playerSprite, 1, 0):
if score.shield < 100:
powerup.play()
score.shield += 10
#Check if player collides with bomb
powerup
for hit in pygame.sprite.groupcollide(bombPowerups,
playerSprite, 1, 0):
powerup.play()
player.bombamount += 1
score.bomb += 1
#Class
Module
class
SpaceMenu:
#Define
the initalize self options
def __init__(self, *options):
self.options = options
self.x = 0
self.y = 0
self.font = pygame.font.Font(None, 32)
self.option = 0
self.width = 1
self.color = [0, 0, 0]
self.hcolor = [0, 0, 0]
self.height = len(self.options)*self.font.get_height()
for o in self.options:
text = o[0]
ren = self.font.render(text, 1, (0,
0, 0))
if ren.get_width() > self.width:
self.width = ren.get_width()
#Draw
the menu
def draw(self, surface):
i=0
for o in self.options:
if i==self.option:
clr = self.hcolor
else:
clr = self.color
text = o[0]
ren = self.font.render(text, 1,
clr)
if ren.get_width() > self.width:
self.width = ren.get_width()
surface.blit(ren, (self.x, self.y +
i*self.font.get_height()))
i+=1
#Menu
Input
def update(self, events):
for e in events:
if e.type == pygame.KEYDOWN:
if e.key == pygame.K_DOWN:
self.option += 1
if e.key == pygame.K_UP:
self.option -= 1
if e.key == pygame.K_RETURN:
self.options[self.option][1]()
if self.option >
len(self.options)-1:
self.option = 0
if self.option < 0:
self.option = len(self.options)-1
#Position
Menu
def set_pos(self, x, y):
self.x = x
self.y = y
#Font
Style
def set_font(self, font):
self.font = font
#Highlight
Color
def set_highlight_color(self, color):
self.hcolor = color
#Font
Color
def set_normal_color(self, color):
self.color = color
#Font
position
def center_at(self, x, y):
self.x = x-(self.width/2)
self.y = y-(self.height/2)
def
missionMenu():
#Arena
arena = Arena()
arena = pygame.sprite.RenderPlain((arena))
#Title for Option Menu
menuTitle = SpaceMenu(
["JOMBS SHOOTER"])
#Option Menu Text
instructions = SpaceMenu(
[""],
["Troll dari planet lain sudah
memasuki planet jombs"],
[""],
["Jombs melawan dan membutuhkan
pertolongan !"],
[""],
["Bantu melawan para penjajah
Troll"],
[""],
["Bersiaplah mengahadapi perang,
siapkan sabunmu"],
[""],
["Niscaya kau akan selamat jombs
!"],
[""],
["Cemungut eaaa !"],
[""],
[""],
[" PRESS ESC TO RETURN "])
#Title
menuTitle.center_at(150, 150)
menuTitle.set_font(pygame.font.Font("data/fonts/planet5.ttf",
48))
menuTitle.set_highlight_color((0, 255, 0))
#Title Center
instructions.center_at(440, 350)
#Menu Font
instructions.set_font(pygame.font.Font("data/fonts/arial.ttf",
22))
#Highlight Color
instructions.set_normal_color((0, 255, 0))
#Set
Clock
clock = pygame.time.Clock()
keepGoing = True
while keepGoing:
clock.tick(30)
#input
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
elif event.type ==
pygame.KEYDOWN:
if event.key ==
pygame.K_ESCAPE:
keepGoing = False
#Draw
screen.blit(background, (0,0))
arena.update()
arena.draw(screen)
menuTitle.draw(screen)
instructions.draw(screen)
pygame.display.flip()
def
aboutMenu():
#Arena
arena = Arena()
arena = pygame.sprite.RenderPlain((arena))
#About Menu Text
#Title for Option Menu
menuTitle = SpaceMenu(
["JOMBS SHOOTER"])
info = SpaceMenu(
[""],
["Buatan Keluarga Bony"],
[""],
["Diberdayakan oleh PBU
Corp."],
[""],
["Student's from Mr. Benny
Irawan"],
[""],
[""],
[" Tekan ESC Untuk Melanjutkan "])
#About Title Font color, alignment, and
font type
menuTitle.center_at(150, 150)
menuTitle.set_font(pygame.font.Font("data/fonts/planet5.ttf",
48))
menuTitle.set_highlight_color((0, 255, 0))
#About Menu Text Alignment
info.center_at(400, 310)
#About Menu Font
info.set_font(pygame.font.Font("data/fonts/arial.ttf", 28))
#About Menu Font Color
info.set_normal_color((0, 255, 0))
#Set Clock
clock = pygame.time.Clock()
keepGoing = True
while keepGoing:
clock.tick(30)
#input
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
elif event.type ==
pygame.KEYDOWN:
if event.key ==
pygame.K_ESCAPE:
keepGoing = False
#Draw
screen.blit(background, (0,0))
arena.update()
arena.draw(screen)
menuTitle.draw(screen)
info.draw(screen)
pygame.display.flip()
#Functions
def
option1():
game()
def
option2():
missionMenu()
def
option3():
aboutMenu()
def
option4():
pygame.quit()
sys.exit()
#Main
def
main():
#Arena
arena = Arena()
arena = pygame.sprite.RenderPlain((arena))
#Defines menu, option functions, and option
display. For example,
#Changing "Start" to
"Begin" will display Begin, instead of start.
menuTitle = SpaceMenu(
["JOMBS Shooter"])
menu = SpaceMenu(
["MULAI MBLO", option1],
["INI MISI MBLO", option2],
["TENTANG JOMBLO", option3],
["KELUAR MBLO", option4])
#Title
menuTitle.center_at(150, 150)
menuTitle.set_font(pygame.font.Font("data/fonts/planet5.ttf",
48))
menuTitle.set_highlight_color((0, 255, 0))
#Menu settings
menu.center_at(400, 320)
menu.set_font(pygame.font.Font("data/fonts/arial.ttf",
32))
menu.set_highlight_color((0, 255, 0))
menu.set_normal_color((0, 85, 0))
clock = pygame.time.Clock()
keepGoing = True
while 1:
clock.tick(30)
#Events
events = pygame.event.get()
#Update Menu
menu.update(events)
#Quit Event
for e in events:
if e.type == pygame.QUIT:
pygame.quit()
return
#Draw
screen.blit(background, (0,0))
arena.update()
arena.draw(screen)
menu.draw(screen)
menuTitle.draw(screen)
pygame.display.flip()
if
__name__ == "__main__":
main()
BAB III
PENUTUP
3.1
Kesimpulan
Bahasa
Pemrograman Python memiliki kemudahan tersendiri dalam mengoperasikannya.
Sehingga, memudahkan pengguna untuk melakukan pembuatan program aplikasi
menggunakan bahasa pemrograman ini. Bahasa pemrograman yang ditemukan oleh I
Guido Van Rossum ini dapat digunakan di berbagai jenis system operasi, sehingga
user yang menggunakan system operasi apapun dapat menggunakan bahasa
pemrograman ini.
Selain
itu, Python juga termasuk interpreter, sebuah program yang dapat mengerti bahasa pengguna.
3.2
Saran
Banyaknya
bahasa pemrograman yang digunakan oleh berbagai kalangan dapat mempengaruhi
program aplikasi yang dibangun. Sehingga, pemilihan bahasa pemrograman yang
tepatpun dinilai sangat penting agar tidak mendapatkan kekecewaan dari hasil
yang didapat.
Oleh
sebab itu, pembelajaran terhadap bahasa pemrograman yang baru patut untuk
dilakukan. Hal ini dimaksudkan agar kita dapat memilih bahasa pemrograman yang
tepat dalam pembangunan sebuah program aplikasi.
Tidak ada komentar:
Posting Komentar