Total Tayangan Halaman

Kamis, 28 Mei 2026

modul pembelajaran phyton membuat Snack game

Modul Pembelajaran Kelas XI RPL (Rekayasa Perangkat Lunak)
Modul ini berfokus pada salah satu kompetensi inti di kelas XI, yaitu Pemrograman Berorientasi Objek (Object-Oriented Programming - OOP)menggunakan studi kasus yang dekat dengan apa yang baru saja kita bahas: Game Developer Logika Dasar.


Mata Pelajaran: Pemrograman Berorientasi Objek (PBO / OOP)
Kelas / Semester: XI / Genap
Alokasi Waktu: 4 x 45 Menit (2 Pertemuan)
Materi Pokok:Implementasi Class, Object, dan Encapsulation dalam Game 2D
I. Pendahuluan
A. Deskripsi Singkat
Modul ini akan membimbing Anda untuk memahami konsep dasar Pemrograman Berorientasi Objek (PBO) melalui pendekatan praktis. PBO adalah paradigma pemrograman yang berbasis pada konsep "objek", yang dapat berisi data (atribut) dan kode (method). Untuk mempermudah pemahaman, kita akan membedah logika OOP di balik pembuatan game klasik.

B. Kompetensi Dasar (KD)
 Memahami konsep pemrograman berorientasi objek. dan
 Mempresentasikan konsep pemrograman berorientasi objek.

C. Tujuan Pembelajaran
Setelah mempelajari modul ini, siswa diharapkan mampu:
 1. Menjelaskan perbedaan antara Class dan Object dengan tepat.
 2. Menentukan atribut dan method dari sebuah entitas perangkat lunak.
 3. Mengimplementasikan struktur Class ke dalam kode program Python/Pygame.

II. Kegiatan Belajar: Konsep Dasar OOP (Class & Object)
A. Uraian Materi
Dalam pemrograman prosedural standar, kita membuat kode berupa instruksi baris-per-baris yang mengeksekusi data. Namun, saat aplikasi bertambah besar (seperti game), kode akan menjadi berantakan. 
Di sinilah PBO (OOP) digunakan.
Ada dua istilah paling mendasar yang wajib dikuasai:
 1. Class (Kelas): Cetakan, blueprint, atau cetak biru. Class mendefinisikan bentuk, sifat, dan kemampuan dari apa yang akan dibuat. Class belum berupa wujud nyata.
 2. Object (Objek): Hasil nyata dari cetakan Class. Objek adalah entitas yang memiliki ruang di memori, memiliki nilai (keadaan), dan bisa melakukan aksi.
            Analogi di Dunia Nyata
Bayangkan sebuah cetakan kue berbentuk bintang.
 Class adalah cetakan kue bintang itu sendiri.
 Object adalah kue-kue nyata yang Anda makan setelah adonan dimasukkan ke dalam cetakan.
Komponen di dalam Class
Setiap Class umumnya memiliki dua komponen utama:
 Attributes (Atribut/Properti): Data atau variabel yang dimiliki oleh objek (misal: warna ular, ukuran koordinat X dan Y, kecepatan).
 Methods (Fungsi/Aksi): Apa saja yang bisa dilakukan oleh objek tersebut (misal: maju(), berbelok(), tumbuh(), mati()).

B. Studi Kasus: OOP pada Game Ular (Snake Game)
Mari kita bedah struktur logika game yang kita pelajari menggunakan kacamata OOP. Kita akan memecah game menjadi objek-objek mandiri.
1. Class: Ular (Snake)
 * **Atribut:** * x, y (posisi kepala)
   * body (koordinat daftar kotak tubuhnya)
   * x_direction, y_direction (arah gerak saat ini)
   * game_over (status hidup/mati)
 * **Method:**
   * move() (mengubah posisi koordinat ekor dan kepala)
   * grow() (menambah panjang array tubuh)
   * reset() (mengembalikan ular ke kondisi awal)
2. Class: Makanan (Apple)
 * **Atribut:**
   * x, y (posisi acak apel di grid)
 * **Method:**
   * randomize_position() (mengacak ulang koordinat jika dimakan)


C. Lembar Kerja Praktik (Hands-On)
Ketikkan cuplikan kode Python di bawah ini pada text editor Anda (VS Code / PyCharm) untuk melihat bagaimana *Class* dan *Object* dideklarasikan.
python Mendefinisikan BUKAN objek, melainkan CETAKANNYA (Class)
class Ksatria:
    def __init__(self, nama, darah):
        # Ini adalah Atribut
        self.nama = nama
        self.darah = darah
    
    # Ini adalah Method
    def menyerang(self, musuh):
        print(f"{self.nama} menyerang {musuh}!")

# ---- PROSES INSTANSIASI (Membuat Objek Nyata dari Class) ----
pemain1 = Ksatria(nama="Arthur", darah=100)
pemain2 = Ksatria(nama="Lancelot", darah=120)

# Memanggil Method objek
pemain1.menyerang(pemain2.nama)


III. Evaluasi & Penilaian
A. Tugas Mandiri (Teori)
Jawablah pertanyaan di bawah ini pada buku catatan Anda:
 1. Jelaskan dengan kalimat Anda sendiri, mengapa industri perangkat lunak modern lebih menyukai paradigma OOP dibanding Prosedural!
 2. Jika Anda diminta membuat sistem aplikasi Perpustakaan Sekolah, tentukan minimal 2 Class yang dibutuhkan, beserta 3 atribut dan 2 method untuk masing-masing class tersebut!

B. Penilaian Praktik (Unjuk Kerja)
Berdasarkan kode program Snake Game yang telah disempurnakan sebelumnya, lakukan modifikasi berikut:
 1. Tantangan 1: Ubah atribut BLOCK_SIZE menjadi ukuran 30 dan ubah jumlah GRID_COLS serta GRID_ROWS menjadi 20. Amati apa yang terjadi pada ukuran layar game!
 2. Tantangan 2: Tambahkan fitur akselerasi. Setiap kali skor pemain bertambah kelipatan 5, naikkan nilai variabel FPS sebesar 2 tingkat agar permainan berjalan semakin cepat dan menantang.

IV. Rubrik Penilaian (Untuk Guru)

| Aspek Penilaian | Skor Maksimal | Kriteria Ketercapaian |
| Pemahaman Teori| 30 | Siswa mampu menganalisis atribut dan method objek dunia nyata dengan logis. |
| Implementasi Kode| 40 | Kode berjalan tanpa *error*, sintaks penulisan *class* dan *method* sesuai kaidah. |
| Modifikasi/Kreativitas | 30 | Tantangan mandiri terselesaikan, logika akselerasi *frame rate* (FPS) berfungsi baik. |

Kamis, 23 April 2026

Phyton Dasar pertemuan 1

Download phycharm atau phycharm comunity
Phyton digunakan untuk microcontroller, otomotion/menyalakan lampu, resberyti, arduino atau alat hardware, web, bermain data, Mesin learning, desktop, ai atau multifungsi 
Praktek.
1. New projects 
2. Virtuallenv
3. Centang main.py

Titik Warna merah itu break poin atau Debagh atau tempat berhenti. Hapus semua code
print() adalah sintak mencetak ke bagian consule
print('') menggunakan kutif mendeklasikam sebuah strings

Boolean itu adalah antara true or false
Bahasa pemograman memiliki variable.
Contoh coding
nama= "Syahrul" atau pake ' ' sama aja #tipe string
usia = 18 #tipe integer
tinggi_badan = 183.5 #tipe float jika koma ganti dengan titik





Input User
print(input('hallo siapa nama kamu'))
Menggunakan variable:
input_nama = input('hallo siapa nama kamu?')
print(input_nama)

Operator Matematika: + - * / & // (pembuatan)
a = 4
b = 2
c = a / b #tipe data float
print(c)

Analogi lain ketika print harus sama tipenya gak boleh beda


Tugas
saldo_awal = input('berapa saldo awalmu: ') 
deposit = input('berapa mau deposit ya?' )

print(saldo_akhir)

#munculkan output ke terminal consule hasil setelah saldo awal mu ditambahkan dengan deposit

Jawab:
saldo_awal = input('berapa saldo awalmu: ') 
deposit = input('berapa mau deposit ya?' )
saldo_akhir = int(saldo_awal + int(deposit)
print(saldo_akhir)

TIPE DATA STRING 
nama_saya = "Raeni Official"
print(nama_saya.find('O'))

Hasil : 6 
Alasannya dihitung dari enol
____________________________________
nama_saya = "Raeni Official"
print(len(nama_saya))

Hasil : 11
Alasannya len menghitung jumlah huruf
____________________________________
nama_saya = "Raeni Official"
print('x' in nama_saya)

Hasil : False
Alasannya karena Boolean antara true or false 
____________________________________
nama_saya = "Raeni Official"
print(nama_saya.upper())

Hasil : RAENI OFFICIAL 
Alasannya Mengganti huruf besar
____________________________________
nama_saya = "raeni official"
print(nama_saya.cappitalize())

Hasil : Raeni official 
Alasannya mengganti huruf besar diawal 
____________________________________
nama_saya = "Raeni Official"
print(nama_saya.count('a'))

Hasil : 3
Alasannya menghitung jumlah karakter yang disebutkan 

Bab mengenai Kondisi atau IF
Penjelasan:
== sama dengan
> lebih dari
< kurang dari
!= tidak sama dengan
>= lebih dari sama dengan
<= kurang dari sama dengan
Praktek:
usia = 20
if usia == 20:
   print('menjadi karyawan tetap')
Hasil : menjadi karyawan tetap'
________________________________
Kondisi berubah karna gak cocok/ supaya mec atau pengecualian (else)
usia = 50
if usia == 20:
    print('menjadi karyawan tetap')
else:
    print('masa pensiunan bekerja')
Hasil : masa pensiun bekerja

usia = 20
if usia >= 20:
    print('menjadi karyawan tetap')
else:
    print('masa pensiunan bekerja')
Hasil : menjadi karyawan tetap

KONDISI (AND OR)
usia= 7
if usia >= 5 and usia <= 10;
    print('halo anak-anak)
else:
    print('........pengecualian..........')
Hasil : halo anak-anak
______________________________
usia= 15
if usia >= 5 and usia <= 10:
    print('halo anak-anak)
elif usia > 10 and usia <=20:
    print('halo remaja')
else:
    print('........pengecualian..........')
Hasil : remaja

PR perkondisian
usia 0 belum lahir
usia 1-3 bayi
usia 3-5 balita
5-10 anak-anak
10 -17 remaja
18 - 25 dewasa
25 - 35 orang tua 
35 - 50 manula

Looping atau Array (kumpulan value atau nilai-nilai dari variable)
contoh:
1.
hobby_saya = ['nonton', 'belajar', 'memasak']
print(hobby_saya)
2.
hobby_saya = ['nonton', 'belajar', 'memasak']
print(hobby_saya[1])
3.
hobby_saya = ['nonton', 'belajar', 'memasak']
print(len(hobby_saya)
4. Baris kebawah atau ngelooping atau tuntunan data yg ada
hobby_saya = ['nonton', 'belajar', 'memasak']
for hobby in hobby_saya:
     print(hobby)
5. Looping tanpa Array
awal = 1
while awal <= 10:
     print(awal)
     awal = awal + 1 #atau awal += 1

Latihan 
#user bisa bayar hutang jika saldo dia cukup atau lebih untuk membayar
#user tidak akan bisa bayar hutang jika saldo nya kurang
jawab:
saldo_awal = 5000
deposit = input('berapa mau depositnya: ')

saldo_total = saldo_awal + deposit 
hutang = 50_000

Selasa, 10 Februari 2026

Peminjaman Alat Bootstrap 5 Part 2

 Mari Kita Kenalan dulu APAsih FRAMEWORK

Framework adalah struktur yang tersusun dari serangkaian kode generik dan berfungsi untuk mengembangkan sistem dan aplikasi. Kerangka kerja ini berperan sebagai template atau model yang menyediakan fungsi cerdas dan elemen struktur standar untuk memudahkan pekerjaan developer.

Kenapa Pake Bootstrap 5 karena menurut lebih mudah, banyak referensi dan dapat diimplementasikan dengan coding backend PHP dan Javascript dalam pembelajaran dikelas.

Berikut Link saya download: Download · Bootstrap v5.0







Jangan Lupa Buat Databasenya


Mari Kita Buat Laman Admin


admin/dasboard.php

<?php
session_start();

if (!isset($_SESSION['login']) || $_SESSION['role'] != 'admin') {
    header("Location: ../index.php");
    exit;
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Dashboard Admin</title>

    <!-- Bootstrap 5 -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/
    dist/css/bootstrap.min.css" rel="stylesheet">

    <!-- Bootstrap Icons -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons/
    font/bootstrap-icons.css" rel="stylesheet">

   
</head>
<body>

<!-- NAVBAR -->
<nav class="navbar navbar-dark bg-dark">
    <div class="container-fluid">
        <span class="navbar-brand">
            <i class="bi bi-speedometer2"></i> Admin Panel
        </span>
        <a href="../auth/logout.php" class="btn btn-danger btn-sm">
            <i class="bi bi-box-arrow-right"></i> Logout
        </a>
    </div>
</nav>

<div class="container-fluid">
    <div class="row">

        <!-- SIDEBAR -->
        <div class="col-md-3 col-lg-2 sidebar p-0">
            <div class="list-group list-group-flush">

                <a href="dashboard.php" class="list-group-item
                list-group-item-action active">
                    <i class="bi bi-house"></i> Dashboard
                </a>

                <a href="users.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-people"></i> CRUD User
                </a>

                <a href="kategori.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-tags"></i> Kategori
                </a>

                <a href="alat.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-box-seam"></i> Data Alat
                </a>

                 <a href="peminjam.php" class="list-group-item
                    list-group-item-action">
                    <i class="bi bi-people-fill"></i> Data Peminjam
                </a>

                <a href="peminjaman.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-journal-arrow-up"></i> Transaksi Pinjam Alat
                </a>

                <a href="log.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-clock-history"></i> Log Aktivitas
                </a>

            </div>
        </div>

        <!-- CONTENT -->
        <div class="col-md-9 col-lg-10 content">
            <h4>Dashboard Admin</h4>
            <hr>

            <p>Selamat datang, <strong>Admin</strong>.</p>
            <p>
                Silakan gunakan menu di samping untuk mengelola sistem peminjaman alat.
            </p>
        </div>

    </div>
</div>

</body>
</html>


admin/alat.php

<?php
session_start();
require "../config/database.php";

// proteksi halaman (khusus admin)
if (!isset($_SESSION['login']) || $_SESSION['role'] != 'admin') {
    header("Location: ../index.php");
    exit;
}

// LOGIKA PENCARIAN
$keyword = "";
if (isset($_GET['search'])) {
    $keyword = trim($_GET['search']);
    // query cari
    $sql = "SELECT alat.*, kategori.nama_kategori
            FROM alat
            LEFT JOIN kategori ON alat.id_kategori = kategori.id_kategori
            WHERE nama_alat LIKE :keyword
               OR kategori.nama_kategori LIKE :keyword
            ORDER BY id_alat DESC";
    $stmt = $pdo->prepare($sql);
    $stmt->execute(['keyword' => "%$keyword%"]);
    $data = $stmt->fetchAll();
} else {
    // query default (semua data)
    $data = $pdo->query("
        SELECT alat.*, kategori.nama_kategori
        FROM alat
        LEFT JOIN kategori ON alat.id_kategori = kategori.id_kategori
        ORDER BY id_alat DESC
    ")->fetchAll();
}
?>

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Data Alat</title>

    <!-- Bootstrap 5 -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/
    dist/css/bootstrap.min.css" rel="stylesheet">

    <!-- Bootstrap Icons -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons/
    font/bootstrap-icons.css" rel="stylesheet">
   
    <!-- CSS Admin -->
    <link href="../assets/css/boostrap.css" rel="stylesheet">
</head>
<body>

<!-- NAVBAR -->
<nav class="navbar navbar-dark bg-dark">
    <div class="container-fluid">
        <span class="navbar-brand">
            <i class="bi bi-speedometer2"></i> Admin Panel
        </span>
        <a href="../auth/logout.php" class="btn btn-danger btn-sm">
            <i class="bi bi-box-arrow-right"></i> Logout
        </a>
    </div>
</nav>

<div class="container-fluid">
    <div class="row">

        <!-- SIDEBAR -->
            <div class="col-md-3 col-lg-2 sidebar p-0">
            <div class="list-group list-group-flush">
                <a href="dashboard.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-house"></i> Dashboard
                </a>
                <a href="users.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-people"></i> CRUD User
                </a>
                <a href="kategori.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-tags"></i> Kategori
                </a>
                <a href="alat.php" class="list-group-item list-group-item-action active">
                    <i class="bi bi-box-seam"></i> Data Alat
                </a>
                <a href="peminjam.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-people-fill"></i> Data Peminjam
                </a>
                <a href="peminjaman.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-journal-arrow-up"></i> Transaksi Pinjam Alat
                </a>
               <a href="log.php" class="list-group-item list-group-item-action">
                    <i class="bi bi-clock-history"></i> Log Aktivitas</a>
            </div>
        </div>

        <!-- CONTENT -->
        <div class="col-md-9 col-lg-10 content">
           
            <h4 class="mt-3">Data Alat</h4>

            <div class="d-flex justify-content-between mb-3">
                <a href="tambah_alat.php" class="btn btn-primary">
                    <i class="bi bi-plus-lg"></i> Tambah Alat
                </a>

                <!-- FORM PENCARIAN -->
                <form method="GET" class="d-flex" role="search">
                    <input class="form-control me-2" type="search" name="search"
                           placeholder="Cari alat / kategori..."
                           value="<?= htmlspecialchars($keyword) ?>"
                           aria-label="Search">
                    <button class="btn btn-outline-success" type="submit">
                        <i class="bi bi-search"></i>
                    </button>
                    <?php if ($keyword): ?>
                        <a href="alat.php" class="btn btn-outline-secondary ms-1"
                            title="Reset">
                            <i class="bi bi-x-lg"></i>
                        </a>
                    <?php endif; ?>
                </form>
            </div>

            <table class="table table-bordered table-striped">
                <thead class="table-dark">
                    <tr>
                        <th>No</th>
                        <th>Kategori</th>
                        <th>Nama Alat</th>
                        <th>Gambar</th>
                       
                        <th>Stok</th>
                        <th>Kondisi</th>
                        <th width="150">Aksi</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if (count($data) > 0): ?>
                        <?php $no = 1; foreach ($data as $row): ?>
                        <tr>
                            <td><?= $no++ ?></td>
                            <td><?= $row['nama_kategori'] ?? '-' ?></td>
                            <td><?= htmlspecialchars($row['nama_alat']) ?></td>
                            <td class="text-center">
                                <?php if (!empty($row['gambar'])): ?>
                                    <img src="../assets/image/<?=
            $row['gambar'] ?>" alt="gambar" width="60" class="img-thumbnail">
                                <?php else: ?>
                                    <span class="text-muted">-</span>
                                <?php endif; ?>
                            </td>
                           
                            <td><?= $row['stok'] ?></td>
                            <td>
                                <!-- Kondisi Badge -->
                                <?php
                                    $badgeClass = 'bg-secondary';
                                    if ($row['kondisi'] == 'Baik') $badgeClass =
                                    'bg-success';
                                   
                                    elseif ($row['kondisi'] == 'Rusak')
                                    $badgeClass = 'bg-danger';
                                ?>
                                <span class="badge <?= $badgeClass ?>">
                                <?= htmlspecialchars($row['kondisi']) ?></span>
                            </td>
                            <td>
                                <a href="edit_alat.php?id=<?= $row['id_alat'] ?>"
                                   class="btn btn-warning btn-sm">
                                   <i class="bi bi-pencil-square"></i> Edit
                                </a>
                                <a href="hapus_alat.php?id=<?= $row['id_alat'] ?>"
                                   class="btn btn-danger btn-sm"
                                   onclick="return confirm
                                   ('Yakin ingin menghapus alat ini?')">
                                   <i class="bi bi-trash"></i> Hapus
                                </a>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    <?php else: ?>
                        <tr>
                            <td colspan="7" class="text-center">
                                Data alat tidak ditemukan
                            </td>
                        </tr>
                    <?php endif; ?>
                </tbody>
            </table>

        </div>

    </div>
</div>

</body>
</html>

admin/tambahalat.php

<?php
session_start();
require "../config/database.php";

// proteksi halaman (khusus admin)
if (!isset($_SESSION['login']) || $_SESSION['role'] != 'admin') {
    header("Location: ../index.php");
    exit;
}

// ambil data kategori
$kategori = $pdo->query("SELECT * FROM kategori")->fetchAll();

// proses simpan
if (isset($_POST['simpan'])) {
    $nama     = trim($_POST['nama_alat']);
    $kategori_id = $_POST['id_kategori'];
    $stok     = $_POST['stok'];
    $kondisi  = trim($_POST['kondisi']);
    $gambar   = null;

    // validasi sederhana
    if ($nama == "" || $stok == "") {
        $error = "Nama alat dan stok wajib diisi!";
    } else {
        // Upload Gambar
        if (!empty($_FILES['gambar']['name'])) {
            $target_dir = "../assets/image/";
            if (!is_dir($target_dir)) mkdir($target_dir, 0777, true);

            $file_name = time() . "_" . basename($_FILES["gambar"]["name"]);
            $target_file = $target_dir . $file_name;
            $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

            // Validasi tipe file
            $allowed_types = ['jpg', 'jpeg', 'png', 'gif'];
            if (in_array($imageFileType, $allowed_types)) {
                if (move_uploaded_file($_FILES["gambar"]["tmp_name"], $target_file)) {
                    $gambar = $file_name;
                } else {
                    $error = "Gagal mengupload gambar.";
                }
            } else {
                $error = "Format file tidak didukung! Gunakan JPG, JPEG, PNG, atau GIF.";
            }
        }

        if (!isset($error)) {
            $sql = $pdo->prepare("
                INSERT INTO alat (nama_alat, id_kategori, stok, kondisi, gambar)
                VALUES (?, ?, ?, ?, ?)
            ");
            $sql->execute([$nama, $kategori_id, $stok, $kondisi, $gambar]);

            header("Location: alat.php");
            exit;
        }
    }
}
?>

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Tambah Alat</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>

<nav class="navbar navbar-dark bg-dark">
    <div class="container">
        <span class="navbar-brand">Tambah Data Alat</span>
        <a href="alat.php" class="btn btn-secondary btn-sm">Kembali</a>
    </div>
</nav>

<div class="container mt-4">

    <div class="card shadow">
        <div class="card-body">

            <h5 class="mb-3">Form Tambah Alat</h5>

            <?php if (isset($error)): ?>
                <div class="alert alert-danger">
                    <?= $error ?>
                </div>
            <?php endif; ?>

            <form method="POST" enctype="multipart/form-data">
                <div class="mb-3">
                    <label class="form-label">Nama Alat</label>
                    <input type="text" name="nama_alat" class="form-control" required>
                </div>

                <div class="mb-3">
                    <label class="form-label">Kategori</label>
                    <select name="id_kategori" class="form-select">
                        <option value="">-- Pilih Kategori --</option>
                        <?php foreach ($kategori as $k): ?>
                            <option value="<?= $k['id_kategori'] ?>">
                                <?= htmlspecialchars($k['nama_kategori']) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>

                <div class="mb-3">
                    <label class="form-label">Gambar Alat</label>
                    <input type="file" name="gambar" class="form-control" accept="image/*">
                    <small class="text-muted">Format: JPG, JPEG, PNG, GIF</small>
                </div>

                <div class="mb-3">
                    <label class="form-label">Stok</label>
                    <input type="number" name="stok" class="form-control" min="0" required>
                </div>

                <div class="mb-3">
                    <label class="form-label">Kondisi</label>
                    <select name="kondisi" class="form-select" required>
                        <option value="Baik">Baik</option>
                        <option value="Rusak">Rusak</option>
                    </select>
                </div>

                <button type="submit" name="simpan" class="btn btn-primary">
                    Simpan
                </button>
                <a href="alat.php" class="btn btn-secondary">
                    Batal
                </a>
            </form>

        </div>
    </div>

</div>

</body>
</html>





modul pembelajaran phyton membuat Snack game

Modul Pembelajaran Kelas XI RPL (Rekayasa Perangkat Lunak) Modul ini berfokus pada salah satu kompetensi inti di kelas XI, yaitu Pemrograman...