HBD Gem Ruby adalah sebuah Ruby Gem yang menyediakan animasi kembang api untuk merayakan ulang tahun. Gem ini dirancang untuk memudahkan pengguna dalam menambahkan efek visual yang menarik ke dalam halaman web anda.
- Animasi kembang api yang indah dan interaktif.
- Mudah diintegrasikan ke dalam proyek Ruby on Rails atau aplikasi web lainnya.
- Dukungan untuk tema gelap dan terang.
- Praktis dan ringan, tidak memerlukan dependensi tambahan yang berat.
target
: Posisi target kembang api (koordinatx
dany
).startingX
: Posisi awal kembang api pada sumbux
, dihitung secara acak dalam rentang[100, window.innerWidth - 100]
.vel
: Vektor kecepatan kembang api, dihitung menggunakan metodevelVector()
.pos
: Posisi saat ini kembang api (x
dany
).colours
: Array warna yang mungkin untuk kembang api.colour
: Warna kembang api yang dipilih secara acak dari arraycolours
.explosionParticles
: Array partikel yang dihasilkan saat kembang api meledak.exploded
: Status apakah kembang api sudah meledak atau belum.
Metode ini menghitung vektor kecepatan kembang api berdasarkan posisi target.
vel
: Kecepatan konstan (10).xDir
: Jarak horizontal antara target dan posisi awal (target.x - startingX
).yDir
: Jarak vertikal antara target dan posisi awal (target.y - window.innerHeight
).scale
: Faktor skala untuk menormalkan vektor kecepatan:
xVel
: Komponen kecepatan horizontal:
yVel
: Komponen kecepatan vertikal:
- Jika
xDir < 0
, arah horizontal dibalik (xVel *= -1
).
- Vektor kecepatan dengan komponen
x
dany
:
Metode ini mengupdate posisi kembang api dan menangani ledakan.
- Jika posisi kembang api (
pos.y
) masih di atas target (target.y
):
- Update posisi kembang api:
- Gambar titik kembang api dengan warna dan ketebalan tertentu.
- Jika kembang api mencapai atau melewati target:
- Jika belum meledak (
exploded == false
), panggil metodeexplode()
. - Update posisi dan kecepatan partikel ledakan:
- Hapus partikel jika keluar dari layar.
Tambahkan baris berikut ke dalam Gemfile
aplikasi Anda:
source "https://rubygems.pkg.github.com/4211421036" do
gem "hbd"
end
Kemudian jalankan perintah:
bundle install
Atau instal secara manual menggunakan:
Cari module package yang anda ingin install
gem search hbd --source https://rubygems.pkg.github.com/4211421036
Pilih module tersebut dengan cara menginstall
gem install rl_hiya_hbd --version "0.0.2"
gem install my_string_extend_hbd --version "0.0.1"
Tambahkan kode ini ke dalam file HTML anda:
<!doctype html><html lang="id" xml-lang="id"><head><meta charset="UTF-8"><title>Selamat Ulang Tahun!</title><link rel="shortcut icon" href="https://4211421036.github.io/g4lihru/987654567.png" type="image/x-icon"><link rel="icon" href="https://4211421036.github.io/g4lihru/987654567.png" type="image/x-icon"><link rel="preload" as="audio" href="https://4211421036.github.io/hbd/hbd.mp3"><link rel="preload" as="image" href="https://4211421036.github.io/hbd/hbd.jpg" type="image/jpg"><link rel="preload" as="image" href="https://4211421036.github.io/g4lihru/987654567.png" type="image/x-icon"><link rel="apple-touch-icon" href="https://4211421036.github.io/g4lihru/987654567.png"><link rel="canonical" href="https://4211421036.github.io/hbd/"><link rel="manifest" href="manifest.webmanifest" crossorigin="use-credentials"><meta name="application-name" content="HBD"><meta name="description" content="Selamat Ulang Tahun!"><meta name="generator" content="HBD"><meta name="bingbot" content="noarchive"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="keywords" content="Selamat Ulang Tahun!"><meta name="robots" content="index, follow"><meta name="author" content="GALIH RIDHO UTOMO"><meta name="color-scheme" content="dark light"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#edf4f8"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1e1e1e"><meta prefix="og: http://ogp.me/ns#" property="og:title" content="Selamat Ulang Tahun!"><meta prefix="og: http://ogp.me/ns#" property="og:type" content="website"><meta prefix="og: http://ogp.me/ns#" property="og:description" content="Selamat Ulang Tahun!"><meta prefix="og: http://ogp.me/ns#" property="og:site_name" content="Birthday Celebration"><meta prefix="og: http://ogp.me/ns#" property="og:locale" content="id_ID"><meta prefix="og: http://ogp.me/ns#" property="og:url" content="https://4211421036.github.io/hbd/"><meta prefix="og: http://ogp.me/ns#" property="og:image" content="https://4211421036.github.io/hbd/hbd.jpg"><meta prefix="og: http://ogp.me/ns#" property="og:image:secure_url" content="https://4211421036.github.io/hbd/hbd.jpg"><meta prefix="og: http://ogp.me/ns#" property="og:image:type" content="image/jpeg"><meta prefix="og: http://ogp.me/ns#" property="og:image:width" content="1280"><meta prefix="og: http://ogp.me/ns#" property="og:image:height" content="1280"><meta prefix="og: http://ogp.me/ns#" property="og:image:alt" content="Selamat Ulang Tahun"><meta prefix="og: http://ogp.me/ns#" property="og:audio:secure_url" content="https://4211421036.github.io/hbd/hbd.mp3"><meta prefix="og: http://ogp.me/ns#" property="og:audio" content="https://4211421036.github.io/hbd/hbd.mp3"><meta prefix="og: http://ogp.me/ns#" property="og:audio:type" content="audio/mpeg"><meta name="google-site-verification" content="OYdjPwgIjGMAbQd3CGwM_l20jLNRRp84mEl3kw06DMg"><meta name="browsermode" content="no-sensors"><meta name="renderer" content="webkit|ie-comp|ie-stand"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="mobile-web-app-capable" content="yes"><meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Strict-Transport-Security" content="max-age=31536000; includeSubDomains; preload"><meta http-equiv="Cross-Origin-Opener-Policy" content="same-origin"><meta http-equiv="X-Content-Type-Options" content="nosniff"><meta http-equiv="Referrer-Policy" content="strict-origin"><meta http-equiv="Content-Security-Policy" content="style-src self nonce-HhAt8acqxJncfl1zuPdmPQ== unsafe-inline https://4211421036.github.io http://4211421036.github.io; object-src none; base-uri self; img-src self data: https://4211421036.github.io http://4211421036.github.io; default-src self https://4211421036.github.io http://4211421036.github.io; script-src self unsafe-inline nonce-HhAt8acqxJncfl1zuPdmPQ== strict-dynamic sha384-oC5xZuayjRS/uax42oWTtZprJ3hCwfez8lJZtc0o0ZFSXFSPiTZhvRM7lkCzIE3g sha384-8qhZECEumeO9WOzyEYb5gr73cuUk9ld2zhRe5Ki/sysPTiTeeAMR23/YLcdLSDtr sha384-pQqoOFthVCMylNYJ0GyFMb4dBC/qyE3q/5wDxDKyjxqQpaLEFQjxiFmmlV6guegT https://4211421036.github.io http://4211421036.github.io;; font-src self https://4211421036.github.io http://4211421036.github.io; media-src self https://4211421036.github.io http://4211421036.github.io; connect-src self https://4211421036.github.io http://4211421036.github.io; form-action self; manifest-src self https://4211421036.github.io http://4211421036.github.io; worker-src self blob: https://4211421036.github.io http://4211421036.github.io"><meta http-equiv="Expires" content="0"><meta http-equiv="content-language" content="id"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@ITBGRU"><meta name="twitter:creator" content="@ITBGRU"><meta name="twitter:title" content="Selamat Ulang Tahun"><meta name="twitter:description" content="Selamat Ulang Tahun"><meta name="twitter:image" content="https://4211421036.github.io/hbd/hbd.jpg"><meta name="twitter:domain" content="4211421036.github.io"><meta name="twitter:url" content="https://4211421036.github.io/MentalHealth"><meta name="twitter:image:src" content="https://4211421036.github.io/g4lihru/987654567.png"><meta name="twitter:image:alt" content="Mental Health">
<script rel="preload" as="script" src="126693cc.js" nonce="HhAt8acqxJncfl1zuPdmPQ==" integrity="sha384-oC5xZuayjRS/uax42oWTtZprJ3hCwfez8lJZtc0o0ZFSXFSPiTZhvRM7lkCzIE3g" crossorigin="anonymous" defer="defer"></script><script rel="preload" as="script" src="e85802e3.js" nonce="HhAt8acqxJncfl1zuPdmPQ==" integrity="sha384-8qhZECEumeO9WOzyEYb5gr73cuUk9ld2zhRe5Ki/sysPTiTeeAMR23/YLcdLSDtr" crossorigin="anonymous" defer="defer"></script><script rel="preload" as="script" src="58fcdf02.js" nonce="HhAt8acqxJncfl1zuPdmPQ==" integrity="sha384-pQqoOFthVCMylNYJ0GyFMb4dBC/qyE3q/5wDxDKyjxqQpaLEFQjxiFmmlV6guegT" crossorigin="anonymous" defer="defer"></script><style nonce="HhAt8acqxJncfl1zuPdmPQ==">:root{--background:radial-gradient(100% 193.51% at 100% 0%, rgb(237, 244, 248) 0%, rgb(239, 242, 250) 16.92%, rgb(250, 239, 246) 34.8%, rgb(250, 230, 242) 48.8%, rgb(250, 240, 247) 63.79%, rgb(241, 241, 251) 81.34%, rgb(240, 244, 248) 100%);--text-light:#333333;--input-border-light:#dddddd;--input-bg-light:#ffffff;--placeholder-light:rgba(255,255,255,0.5);--background-dark:#1e1e1e;--text-dark:#ffffff;--input-border-dark:#404040;--input-bg-dark:#2d2d2d;--placeholder-dark:rgba(0,0,0,0.5);--transition-speed:0.3s}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--background:var(--background-dark);--text:var(--text-dark);--input-border:var(--input-border-dark);--input-bg:var(--input-bg-dark);--placeholder:var(--placeholder-dark)}}@media (prefers-color-scheme:light){:root{color-scheme:light;--background:var(--background-light);--text:var(--text-light);--input-border:var(--input-border-light);--input-bg:var(--input-bg-light);--placeholder:var(--placeholder-light)}}body{margin:0;overflow:hidden;background:var(--background);color:var(--text)}@media (prefers-color-scheme:dark){body{background:var(--background);color:var(--text)}}@keyframes skeletonLoading{0%{opacity:.7}50%{opacity:.5}100%{opacity:.7}}.skeleton-animation{animation:skeletonLoading 1.5s infinite}// Di dalam bagian style input[type=text i]::placeholder{color:var(--placeholder);opacity:.1;transition:opacity var(--transition-speed) ease;contain:style layout;content-visibility:auto;font-display:swap}input#placeholder::-webkit-input-placeholder{display:none!important;color:transparent}input[type=text i]:focus::placeholder{opacity:.7}input[type=text i]:focus{outline:0;border-color:var(--button-bg);box-shadow:0 0 0 2px rgba(76,175,80,.2)}@media (prefers-reduced-motion:reduce){*{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important;scroll-behavior:auto!important}}</style></head><body translate="no" data-new-gr-c-s-check-loaded="14.1147.0"><script nonce="HhAt8acqxJncfl1zuPdmPQ==">"serviceWorker"in navigator&&navigator.serviceWorker.register("/hbd/sw.js").then(e=>console.log("Service worker registered")).catch(e=>console.log("Service worker not registered",e)),console.log("Generated automatic on: 2/15/2025, 12:28:51 AM")</script><script nonce="HhAt8acqxJncfl1zuPdmPQ==">document.addEventListener("DOMContentLoaded",()=>{if(!document.querySelector("#id-c5803a6e")){let e=document.createElement("a");e.href="#defaultCanvas0",e.id="id-104c3ca5",e.textContent="Skip to main content",e.style.position="absolute",e.style.top="-40px",e.style.left="10px",e.style.background="#fff",e.style.color="#000",e.style.padding="5px",e.style.zIndex="1004",e.style.transition="top 0.3s",e.addEventListener("focus",()=>{e.style.top="10px"}),e.addEventListener("blur",()=>{e.style.top="-40px"}),document.body.prepend(e)}let e=document.createElement("div"),t=(e.id="id-3eb3175e",e.role="progressbar",e.title="progressbar",e.style.position="fixed",e.style.top="0",e.style.left="0",e.style.width="0%",e.style.height="3px",e.style.background="#29d",e.style.zIndex="9999",e.style.transition="width 0.2s ease-in-out",document.body.appendChild(e),0),d=setInterval(()=>{(t+=10*Math.random())<90&&(e.style.width=t+"%")},200);window.addEventListener("load",()=>{clearInterval(d),e.style.width="100%",setTimeout(()=>{e.style.opacity="0"},500)})})</script></body></html>
Kami sangat menghargai kontribusi dari komunitas. Jika Anda ingin berkontribusi, silakan ikuti langkah-langkah berikut:
- Fork repositori ini.
- Buat branch baru (
git checkout -b fitur-baru
). - Commit perubahan Anda (
git commit -am Menambahkan fitur baru
). - Push ke branch (
git push origin fitur-baru
). - Buat Pull Request.
Proyek ini dilisensikan di bawah MIT License.
Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk menghubungi:
- Nama: Galih Ridho Utomo
- Email: g4lihru@students.unnes.ac.id
- Website: https://4211421036.github.io/hbd
- GitHub: @4211421036
Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk menghubungi:
- Instagram: https://www.instagram.com/galih_ridho_utomo/
- LinkedIn: https://www.linkedin.com/in/galih-ridho-utomo-2493492b0/
Jika Anda menemukan bug atau memiliki permintaan fitur, silakan buka issue di repositori GitHub.
Jika Anda menggunakan proyek ini dalam penelitian atau publikasi, silakan cantumkan referensi berikut:
@misc{hbd-gem,
author = {Utomo, Galih Ridho},
title = {HBD Package Gem Ruby: Animasi Kembang Api untuk Ulang Tahun},
year = {2025},
howpublished = {\url{https://github.com/4211421036/hbd}},
note = {GitHub repository},
}
Dibuat dengan ❤️ oleh Galih Ridho Utomo. Selamat menggunakan HBD Gem!