Membuat Game RPG Berbasis Teks dengan Python di Distro Linux

Beberapa game RPG yang cukup populer di era PS1 (Play Station) adalah Final Fantasy, Suikoden, Legend of Legaia, dsb. Selain game berbasis tampilan, kita juga dapat memainkan game RPG berbasis teks. Kemarin saya mencari di Google, game RPG simpel yang mudah dibuat dan berbasis text yang dapat dijalankan di terminal Linux. Kemudian saya menemukan game RPG berbasis teks yang dibuat dengan bahasa pemrograman python.

Scriptnya dapat anda copy dibawah ini. Bahasa yang digunakan pada game ini adalah bahasa Inggris, tetapi saya sudah ubah menggunakan bahasa Indonesia.

from random import randint

class Character:
  def __init__(self):
    self.name = ""
    self.health = 1
    self.health_max = 1
  def do_damage(self, enemy):
    damage = min(
        max(randint(0, self.health) - randint(0, enemy.health), 0),
        enemy.health)
    enemy.health = enemy.health - damage
    if damage == 0: print "%s menghindari %s serangan." % (enemy.name, self.name)
    else: print "%s lukai %s!" % (self.name, enemy.name)
    return enemy.health <= 0

class Enemy(Character):
  def __init__(self, player):
    Character.__init__(self)
    self.name = 'musuh'
    self.health = randint(1, player.health)

class Player(Character):
  def __init__(self):
    Character.__init__(self)
    self.state = 'normal'
    self.health = 10
    self.health_max = 10
  def quit(self):
    print "%s tidak dapat mencari jalan kembali, kalah\npermainan selesai." % self.name
    self.health = 0
  def help(self): print Commands.keys()
  def status(self): print "%s's kondisi: %d/%d" % (self.name, self.health, self.health_max)
  def tired(self):
    print "%s terasa lelah." % self.name
    self.health = max(1, self.health - 1)
  def rest(self):
    if self.state != 'normal': print "%s tidak dapat istirahat sekarang!" % self.name; self.enemy_attacks()
    else:
      print "%s istirahat." % self.name
      if randint(0, 1):
        self.enemy = Enemy(self)
        print "%s dibangunkan oleh %s!" % (self.name, self.enemy.name)
        self.state = 'lawan'
        self.enemy_attacks()
      else:
        if self.health < self.health_max:
          self.health = self.health + 1
        else: print "%s tidur terlalu banyak.." % self.name; self.health = self.health - 1
  def explore(self):
    if self.state != 'normal':
      print "%s sedang sibuk sekarang!" % self.name
      self.enemy_attacks()
    else:
      print "%s jelajahi daerah berliku." % self.name
      if randint(0, 1):
        self.enemy = Enemy(self)
        print "%s bertemu %s!" % (self.name, self.enemy.name)
        self.state = 'lawan'
      else:
        if randint(0, 1): self.tired()
  def flee(self):
    if self.state != 'lawan': print "%s berputar sementara waktu." % self.name; self.tired()
    else:
      if randint(1, self.health + 5) > randint(1, self.enemy.health):
        print "%s kabur dari %s." % (self.name, self.enemy.name)
        self.enemy = None
        self.state = 'normal'
      else: print "%s tidak dapat kabur dari %s!" % (self.name, self.enemy.name); self.enemy_attacks()
  def attack(self):
    if self.state != 'lawan': print "%s tidak kena." % self.name; self.tired()
    else:
      if self.do_damage(self.enemy):
        print "%s mengalahkan %s!" % (self.name, self.enemy.name)
        self.enemy = None
        self.state = 'normal'
        if randint(0, self.health) < 10:
          self.health = self.health + 1
          self.health_max = self.health_max + 1
          print "%s tambah kuat!" % self.name
      else: self.enemy_attacks()
  def enemy_attacks(self):
    if self.enemy.do_damage(self): print "%s dikalahkan oleh %s!!!\npermainan selesai." %(self.name, self.enemy.name)

Commands = {
  'keluar': Player.quit,
  'bantuan': Player.help,
  'status': Player.status,
  'istirahat': Player.rest,
  'jelajahi': Player.explore,
  'kabur': Player.flee,
  'serang': Player.attack,
  }

p = Player()
p.name = raw_input("Siapa nama karaktermu? ")
print "(ketik bantuan untuk mendapatkan daftar aksi)\n"
print "%s masuk ke gua gelap, bertualang." % p.name

while(p.health > 0):
  line = raw_input("> ")
  args = line.split()
  if len(args) > 0:
    commandFound = False
    for c in Commands.keys():
      if args[0] == c[:len(args[0])]:
        Commands[c](p)
        commandFound = True
        break
    if not commandFound:
      print "%s perintah tidak diketahui." % p.name
      
"""
Copyright 2010 Francesco Balducci

Diterjemahkan oleh Resa CR (marisharingilmu.wordpress.com)
 
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
 
See <http://www.gnu.org/licenses/> for a copy of the GNU General Public License.
"""

Simpan script tersebut dengan nama game.py. Untuk menjalankannya di terminal Linux, ketik perintah python game.py. Agar serasa bermain game RPG berbasis tampilan, saya ubah tambahkan background game final fantasy di terminal Linux. Seperti ini tampilan game RPG berbasis teks di terminal Linux.

Anda dapat mengembangkan gamenya lebih lanjut.

Selamat mencoba dan semoga bermanfaat 🙂

Untuk pertanyaan, saran dan kritik silahkan ditulis dikolom komentar.

Iklan

Referensi Membuat Aplikasi Desktop Barcode Scanner

Saat saya berbelanja di salah satu supermarket di Jogja (Pamella Swalayan), saya menjumpai alat pengecek harga barang menggunakan barcode scanner. Alat tersebut terdiri dari monitor dan juga barcode scanner. Menggunakan barcode scanner tersebut kita dapat mengetahui harga dari produk yang akan kita beli tanpa harus bertanya / mencari petugas swalayan.

Kita juga dapat membuat aplikasi tersebut dengan model standalone ataupun client server. Contoh program sederhana barcode scanner dapat anda baca dan download programnya lewat link dibawah ini

https://marisharingilmu.wordpress.com/2014/12/08/swing-implementasi-barcode-scanner-di-program-java/

Kemudian jika ingin program tersebut berbasis client server dapat memanfaatkan contoh program di artikel berikut

https://marisharingilmu.wordpress.com/2014/05/11/swing-membuat-program-crud-client-server-dengan-java-dan-mysql/

Selamat mencoba dan semoga bermanfaat 🙂

Untuk pertanyaan, saran dan kritik silahkan ditulis dikolom komentar.

Membuat Aplikasi Perhitungan Volumetrik (Pengiriman Barang) untuk Desktop dan Android

Perhitungan volumetrik biasanya digunakan jika kita mengirim barang yang besar dan lebar di ekspedisi pengiriman barang seperti JNE, Tiki, Pos, dsb. Perhitungan ini menggunakan ukuran yang kemudian hasilnya menjadi berat (Kg). Kali ini saya membuat program perhitungan volumetrik yang cukup ringan dijalankan di komputer desktop dan android, karena berbasis text. Agar dapat dijalankan di komputer desktop anda membutuhkan Java (JDK) dan di android anda membutuhkan Java Manager. Source code dapat langsung anda download melalui link dibawah ini

Download source code aplikasi perhitungan volumetrik

Seperti ini tampilan ketika dijalankan di desktop komputer

Tampilan aplikasinya ketika dijalankan di android dengan Java Manager

Selamat mencoba dan semoga bermanfaat 🙂

Untuk pertanyaan, saran dan kritik silahkan ditulis dikolom komentar.

Membuat Aplikasi Perhitungan Volumetrik (Pengiriman Barang))

Jika kita mengirim barang, misalnya di JNE, Tiki, dan lainnya dengan ukuran yang besar, biaya akan dihitung berdasarkan perhitungan volumetrik. Dari hasil perhitungan volumetrik akan menghasilkan berat yang biaya kirimnya disesuaikan dengan berat tersebut dan lokasi tujuan pengirimannya. Kali ini saya membuat aplikasi desktop sederhana perhitungan volumetrik menggunakan Java. Source code saya share dibawah ini. Untuk Project Netbeans dan file jarnya akan menyusul uploadnya.

http://tempel.blankon.in/5157347

Untuk menggunakan aplikasinya, cukup masukkan angka pada panjang, lebar, dan tinggi kemudian tekan enter untuk memperoleh hasil volumetriknya.

Selamat mencoba dan semoga bermanfaat 🙂

Untuk pertanyaan, saran dan kritik silahkan ditulis dikolom komentar.

Membuat Aplikasi Info Sistem untuk Terminal Emulator Android

Aplikasi ini sebelumnya pernah saya buat dengan menggunakan AIDE (Android IDE) yang dapat langusng dicompile dan dijalankan di Android. Kali ini saya menjalankannya lewat terminal emulator Android. Aplikasi info sistem ini menampilkan nama kernel. versi kernel dan juga arsitekturnya. Source code aplikasinya dapat anda download disini

http://tempel.blankon.in/3557752

Source code tersebut anda build terlebih dahulu menjadi jar dengan IDE Eclipse / Netbeans.

Seperti ini tampilan aplikasinya di terminal emulator android.

screenshot_2017-01-18-21-54-00

Selamat mencoba dan semoga bermanfaat 🙂

Untuk pertanyaan, saran dan kritik silahkan ditulis dikolom komentar.

Membuat Aplikasi Jam Digital Real Time untuk Terminal Emulator Android

Aplikasi ini sebelumnya dibuat untuk dijalankan di terminal desktop Distro Linux. Kemudian saya mencoba untuk menjalakannya di terminal emulator android. Sebelumnya anda harus menginstall JRE di android. Tutorialnya pernah saya share di blog ini. Jam digital tersebut memiliki digit berjalan. Jadi kita dapat melihat waktu berjalan secara real time.

Source code aplikasinya dapat anda download disini

http://tempel.blankon.in/3290805

Berikut ini screenshot aplikasinya berjalan di terminal emulator android.

screenshot_2017-01-17-20-31-50

Selamat mencoba dan semoga bermanfaat 🙂

Untuk pertanyaan, saran dan kritik silahkan ditulis dikolom komentar.