33033`ff" " `ff03333"" ""pw w """" DD@DD033D@D033@DDDD 033000330033003300330330000330330000330033000033033003300330330033000330003003303303300030033000033003300003300330000330330000300003000000003303300000000033000003300003300330000330330033000330033030003300330330330033033033000000000330000003300000000000330330033000000000330000003300000330300330033033000000033030000033033033003303303303300003303300033033033000330033030330000330003300330330003300000 """+"""!"""" "!"" 000000000000DDD@33344DD4ODD4OCC4OCC4O3CDDD333?CDDCDDC43C44C4CC4OCC4OCC4OCC4ODD4ODD4@333DDD44C44C44CDDCDDC?C333DDD0330000 """""""" """"""""""03300000330000033000330000003303300030033033000033033003300330330000330330000 > `` ```@` ``` ` ` ` `` ```` ` ` `` ` ` `` ` `` ``` ` `` ```4?0033033033333333033033033033033000033333333333330300000000000333000303300033033000333033333300030000000033303030330330330003300330330333333303333333303 "333"""fff,,{,{{fff333"""03 "33033`ff" " `ff03333 """"{{{""" " """"{{{03333"""fff ",,,fff33303I-- title: Hamburger Trouble -- author: HexaBee Retro -- desc: Tap the normal burgers-avoid the broken ones! -- script: lua -- saveid: hamburger-trouble -- Licensed: EULA -- Copyright 2026 Hexabee Retro version="v2.0" -- ========================================== -- 1. AYARLAR VE SABİTLER (CONFIG) -- ========================================== local DURUM = { SPLASH = -1, DIL_SECIMI = -2, MENU = 0, OYUN = 1, BITTI = 2, YARDIM = 3 } local MOD = { NORMAL = 0, SONSUZ = 1 } local SPRITE = { IYI = 1, KOTU = 2, DUVAR = 3, ALTIN = 15, BUZ = 16 } local AYAR = { MAX_BELA = 10, MAX_KOTU = 4, MAX_BELA_SONSUZ = 15, MAX_KOTU_SONSUZ = 5, SURE = 45, SURE_BONUS = 3, ZAMAN_BONUS = 3, -- Spawn Ayarları KOTU_SPAWN_RATE = 120, ALTIN_PUAN_LIMIT = 25, BUZ_PUAN_LIMIT = 50, ALTIN_OMUR = 300, BUZ_OMUR = 180, -- Fizik HIZ_MIN = 0.3, HIZ_MAX = 2.0, ZORLUK_ARTIS = 0.001, DUVAR_BOYUT = 8, -- Kombo KOMBO_SURE = 120 } -- ========================================== -- 2. GLOBAL OYUN DURUMU (STATE) -- ========================================== local OYUN = { durum = DURUM.SPLASH, mod = MOD.NORMAL, dil = "tr", frame = 0, puan = 0, high_score = 0, -- Zamanlayıcılar sure_toplam = AYAR.SURE, sure_kalan = AYAR.SURE, -- Nesne Listeleri belalar = {}, kotuler = {}, duvarlar = {}, -- Bonuslar altin = nil, buz = nil, sonraki_altin_puan = AYAR.ALTIN_PUAN_LIMIT, sonraki_buz_puan = AYAR.BUZ_PUAN_LIMIT, -- Kombo Sistemi kombo = 0, kombo_timer = 0, -- Input ve Müzik Kontrolü fare_onceki = false, muzik_caliyor = false } -- ========================================== -- 3. DİL VE METİN SİSTEMİ (LOCALIZATION) -- ========================================== local SOZLUK = { tr = { normal = "NORMAL", sonsuz = "SONSUZ", yardim = "YARDIM", zaman = "SuRE: %d", bitti = "OYUN SONU!", skor = "PUAN: %03d", rekor = "REKOR: %03d", yeniden = "FARE iLE YENiDEN BAsLAT", yardim_1 = "NORMAL HAMBURGERE BAS!", yardim_2 = "BOZUK OLANLARA BASMA!", yardim_3 = "NORMAL - ZAMANA DiKKAT ET.", yardim_4 = "SONSUZ - ZAMAN YOK PUAN YAP.", yardim_5 = "FARE iLE MENUYE GIT", dil_tr = "TuRKcE", dil_en = "ENGLISH", kombo = "KOMBO X%d" }, en = { normal = "NORMAL", sonsuz = "y", -- y harfi sonsuzluk simgesi (Sprite 69) yardim = "HELP", zaman = "TIME: %d", bitti = "GAME OVER!", skor = "SCORE: %03d", rekor = "BEST: %03d", yeniden = "CLICK TO RESTART", yardim_1 = "CLICK NORMAL BURGERS", yardim_2 = "DON NOT CLICK BROKEN ONES", yardim_3 = "NORMAL - WATCH THE TIME", yardim_4 = "INFINITY - JUST SCORE", yardim_5 = "CLICK TO RETURN TO MENU", dil_tr = "TURKCE", dil_en = "ENGLISH", kombo = "COMBO X%d" } } -- Özel Sprite Font Haritası local FONT_MAP = { ["A"]=19, ["B"]=20, ["C"]=21, ["Ç"]=22, ["D"]=23, ["E"]=24, ["F"]=25, ["G"]=26, ["Ğ"]=27, ["H"]=28, ["I"]=29, ["İ"]=30, ["J"]=31, ["K"]=32, ["L"]=33, ["M"]=34, ["N"]=35, ["O"]=36, ["Ö"]=37, ["P"]=38, ["R"]=39, ["S"]=40, ["Ş"]=41, ["T"]=42, ["U"]=43, ["Ü"]=44, ["V"]=45, ["Y"]=46, ["Z"]=47, ["W"]=48, ["X"]=49, ["Q"]=50, ["0"]=52, ["1"]=53, ["2"]=54, ["3"]=55, ["4"]=56, ["5"]=57, ["6"]=58, ["7"]=59, ["8"]=60, ["9"]=61, ["&"]=51, ["-"]=74, ["."]=63, [" "]=0, ["/"]=62, [":"]=75, ["y"]=69 -- Küçük y harfini sonsuzluk işaretine bağladık } function T(key) return SOZLUK[OYUN.dil][key] or "???" end function YaziGenisligi(metin, scale) return #metin * 8 * (scale or 1) end function OrtalaX(metin, scale) return (240 - YaziGenisligi(metin, scale)) / 2 end function YaziCiz(metin, x, y, scale) scale = scale or 1 local cur_x = x for i = 1, #metin do local c = string.sub(metin, i, i) -- Küçük harf düzeltmeleri if c=="c" then c="Ç" elseif c=="s" then c="Ş" elseif c=="o" then c="Ö" elseif c=="g" then c="Ğ" elseif c=="u" then c="Ü" elseif c=="i" then c="İ" end local id = FONT_MAP[c] or 0 if id > 0 then spr(id, cur_x, y, -1, scale, 0, 0, 1, 1) end cur_x = cur_x + 8 * scale end end -- ========================================== -- 4. FİZİK VE YARDIMCI FONKSİYONLAR -- ========================================== function DuvarlariOlustur() OYUN.duvarlar = {} local adim = AYAR.DUVAR_BOYUT -- Üst ve Alt for x = 0, 240 - adim, adim do table.insert(OYUN.duvarlar, {x = x, y = 8}) table.insert(OYUN.duvarlar, {x = x, y = 136 - adim}) end -- Sol ve Sağ for y = adim, 136 - 2 * adim, adim do table.insert(OYUN.duvarlar, {x = 0, y = y}) table.insert(OYUN.duvarlar, {x = 240 - adim, y = y}) end end function DuvarIcindeMi(px, py) for _, d in ipairs(OYUN.duvarlar) do if px >= d.x and px < d.x + AYAR.DUVAR_BOYUT and py >= d.y and py < d.y + AYAR.DUVAR_BOYUT then return true end end return false end function SinirlariKoru(nesne) nesne.x = math.max(0, math.min(240 - AYAR.DUVAR_BOYUT, nesne.x)) nesne.y = math.max(0, math.min(136 - AYAR.DUVAR_BOYUT, nesne.y)) end function CarpismaCoz(nesne, yeni_pos, eksen) local boyut = AYAR.DUVAR_BOYUT local carpisma = false local merkez_nesne = (eksen == 'x') and (nesne.x + boyut/2) or (nesne.y + boyut/2) for _, d in ipairs(OYUN.duvarlar) do local sol, sag, ust, alt = d.x, d.x+boyut, d.y, d.y+boyut local carpisir_mi = false if eksen == 'x' then carpisir_mi = (yeni_pos < sag and yeni_pos + boyut > sol) and (nesne.y < alt and nesne.y + boyut > ust) else carpisir_mi = (nesne.x < sag and nesne.x + boyut > sol) and (yeni_pos < alt and yeni_pos + boyut > ust) end if carpisir_mi then carpisma = true local merkez_duvar = (eksen == 'x') and (d.x + boyut/2) or (d.y + boyut/2) -- Sekme if merkez_nesne < merkez_duvar then if eksen == 'x' then nesne.x = sol - boyut - 0.1 else nesne.y = ust - boyut - 0.1 end else if eksen == 'x' then nesne.x = sag + 0.1 else nesne.y = alt + 0.1 end end -- Hızı ters çevir ve yavaşlat if eksen == 'x' then nesne.vx = -nesne.vx * 0.8 else nesne.vy = -nesne.vy * 0.8 end break end end if not carpisma then if eksen == 'x' then nesne.x = yeni_pos else nesne.y = yeni_pos end end end function NesneHareketEt(nesne) CarpismaCoz(nesne, nesne.x + nesne.vx, 'x') CarpismaCoz(nesne, nesne.y + nesne.vy, 'y') SinirlariKoru(nesne) end function RastgelePozisyon() local max_x = 240 - 24 - AYAR.DUVAR_BOYUT local max_y = 136 - 24 - AYAR.DUVAR_BOYUT local x, y, deneme = 0, 0, 0 repeat x = math.random(24, max_x) y = math.random(24, max_y) deneme = deneme + 1 until not DuvarIcindeMi(x, y) or deneme > 50 if deneme > 50 then return nil end return x, y end function YeniNesne(tip) local x, y = RastgelePozisyon() if not x then return nil end local nesne = { x = x, y = y } if tip == "bela" then local hiz_carpan = 1 + OYUN.frame * AYAR.ZORLUK_ARTIS nesne.vx = (math.random() * (AYAR.HIZ_MAX - AYAR.HIZ_MIN) + AYAR.HIZ_MIN) * hiz_carpan nesne.vy = (math.random() * (AYAR.HIZ_MAX - AYAR.HIZ_MIN) + AYAR.HIZ_MIN) * hiz_carpan if math.random() > 0.5 then nesne.vx = -nesne.vx end if math.random() > 0.5 then nesne.vy = -nesne.vy end elseif tip == "kotu" then local hiz_carpan = 1 + OYUN.frame * AYAR.ZORLUK_ARTIS * 0.5 nesne.vx = (math.random() * 1.0 + 0.3) * hiz_carpan nesne.vy = (math.random() * 1.0 + 0.3) * hiz_carpan if math.random() > 0.5 then nesne.vx = -nesne.vx end if math.random() > 0.5 then nesne.vy = -nesne.vy end elseif tip == "altin" then nesne.kalan_sure = AYAR.ALTIN_OMUR elseif tip == "buz" then nesne.kalan_sure = AYAR.BUZ_OMUR end return nesne end function InputKontrol() local mx, my, sol = mouse() local tiklandi = sol and not OYUN.fare_onceki OYUN.fare_onceki = sol -- Klavye desteği (Z veya X) if btn(4) and not tiklandi then mx, my = 120, 68 tiklandi = true end return tiklandi, mx, my end -- ========================================== -- 5. OYUN DÖNGÜLERİ (STATES) -- ========================================== function OyunBaslat() OYUN.puan = 0 OYUN.frame = 0 OYUN.belalar = {} OYUN.kotuler = {} OYUN.altin = nil OYUN.buz = nil OYUN.kombo = 0 OYUN.kombo_timer = 0 OYUN.sonraki_altin_puan = AYAR.ALTIN_PUAN_LIMIT OYUN.sonraki_buz_puan = AYAR.BUZ_PUAN_LIMIT OYUN.sure_toplam = AYAR.SURE DuvarlariOlustur() OYUN.high_score = pmem(0) or 0 for i=1, 3 do table.insert(OYUN.belalar, YeniNesne("bela")) end end function OyunBitir() music(-1) -- Müziği sustur sfx(-1) -- Tüm sesleri sustur (Döngüde kalanları keser) OYUN.durum = DURUM.BITTI OYUN.muzik_caliyor = false -- Bayrağı sıfırla ki menüde tekrar başlasın end local start_time = 0 function State_Splash() cls(0) if start_time == 0 then start_time = time() end local elapsed = time() - start_time cls() spr(70, 58, 42, 0, 3) spr(71, 80, 42, 0, 3) spr(72, 58, 65, 0, 3) spr(73, 80, 65, 0, 3) YaziCiz("HEXABEE", 108, 50) YaziCiz("RETRO", 108, 70) YaziCiz("FROM KAYSERi/TURKiYE", 40, 95) YaziCiz("WWW.HEXABEE.COM.TR/RETRO", 25, 128, 1) local perde_genisligi = math.max(0, 8 - (elapsed / 200)) if perde_genisligi > 0 then for y = 0, 136, 8 do rect(0, y, 240, perde_genisligi, 0) end end if btnp(4) or OYUN.frame >= 120 then OYUN.durum = DURUM.DIL_SECIMI OYUN.frame = 0 end end function State_DilSecimi() cls(0) YaziCiz("DiL SEc / SELECT LANGUAGE", OrtalaX("DIL SEC / SELECT LANGUAGE"), 40) local tiklandi, mx, my = InputKontrol() local tr_txt = T"dil_tr" local en_txt = T"dil_en" local y = 80 local gap = 40 local center_x = 120 local tr_x = center_x - gap - 10 local en_x = center_x + 10 -- TR Butonu local tr_w = YaziGenisligi(tr_txt) local tr_hover = (mx >= tr_x-5 and mx <= tr_x+tr_w+5 and my >= y-5 and my <= y+15) rectb(tr_x-4, y-4, tr_w+8, 16, tr_hover and 12 or 14) YaziCiz(tr_txt, tr_x, y) -- EN Butonu local en_w = YaziGenisligi(en_txt) local en_hover = (mx >= en_x-5 and mx <= en_x+en_w+5 and my >= y-5 and my <= y+15) rectb(en_x-4, y-4, en_w+8, 16, en_hover and 12 or 14) YaziCiz(en_txt, en_x, y) if tiklandi then if tr_hover then OYUN.dil = "tr"; OYUN.durum = DURUM.MENU; OYUN.frame = 0 end if en_hover then OYUN.dil = "en"; OYUN.durum = DURUM.MENU; OYUN.frame = 0 end end end function State_Menu() cls(0) OYUN.high_score = pmem(0) or 0 -- MÜZİĞİ BURADA BAŞLATIYORUZ (Sadece çalmıyorsa başlatır) if not OYUN.muzik_caliyor then music(0, true, 0) -- Track 0, Loop, Start frame 0 OYUN.muzik_caliyor = true end local y_off = (OYUN.frame < 60) and (1 - OYUN.frame/60)*50 or 0 -- Hamburger Logo (Üst Satır) local logo_ids = {4,5,6,7,8,9,10,11,9} local logo_x = 48 -- Ortalanmış: (240 - 144) / 2 = 48 local logo_y = 30 + y_off -- Köşelere sprite'ları yerleştir spr(1, 30, logo_y - 0, -1, 1) -- Sol üst (1) spr(2, 200, logo_y - 0, -1, 1) -- Sağ üst (2) -- Ana hamburger logosu for i, id in ipairs(logo_ids) do spr(id, logo_x + (i-1)*16, logo_y, -1, 2) end -- Yazı Logosu (Alt Satır) local yazi_y = logo_y + 20 if OYUN.dil == "tr" then local bela_ids = {7,11,12,5,12,5,9,13} local bela_x = 56 -- Ortalanmış: (240 - 128) / 2 = 56 for i, id in ipairs(bela_ids) do spr(id, bela_x + (i-1)*16, yazi_y, -1, 2) end else local trouble_ids = {17,9,18,8,7,12,11} local trouble_x = 64 -- Ortalanmış: (240 - 112) / 2 = 64 for i, id in ipairs(trouble_ids) do spr(id, trouble_x + (i-1)*16, yazi_y, -1, 2) end end -- Alt köşeler spr(16, 30, yazi_y - -10, -1, 1) -- Sol alt (16) spr(3, 200, yazi_y - -10, -1, 1) -- Sağ alt (3) YaziCiz("V2.00", 240 - YaziGenisligi("V1.00") - 2, 128 + y_off) if OYUN.frame >= 60 then -- Üst/Alt Logo Parçaları YaziCiz("2025 - TTALGIBIT", 58, 85) YaziCiz("2026 - HEXABEE RETRO", 48 , 95) local tiklandi, mx, my = InputKontrol() local butonlar = { { txt=T"normal", mod=MOD.NORMAL, y=108 }, { txt=T"sonsuz", mod=MOD.SONSUZ, y=118 }, { txt=T"yardim", mod="yardim", y=128 } } rectb(80, 105, 80, 32, 14) local skor_metni = string.format(T"skor", 0) local rekor_metni = string.format(T"rekor", OYUN.high_score) YaziCiz(string.format("%s %s", skor_metni, rekor_metni), 40, 10) for i, btn in ipairs(butonlar) do local bx = OrtalaX(btn.txt) YaziCiz(btn.txt, bx, btn.y) if mx >= bx and mx <= bx + YaziGenisligi(btn.txt) + 15 and my >= btn.y and my <= btn.y+10 then spr(1, bx - 10, btn.y, -1, 1) if tiklandi then if btn.mod == "yardim" then OYUN.durum = DURUM.YARDIM else OYUN.mod = btn.mod OYUN.durum = DURUM.OYUN OyunBaslat() music(-1) end end end end end end function State_Game() cls(0) if OYUN.kombo_timer > 0 then OYUN.kombo_timer = OYUN.kombo_timer - 1 if OYUN.kombo_timer <= 0 then OYUN.kombo = 0 end end OYUN.sure_kalan = OYUN.sure_toplam - (OYUN.frame / 60) if OYUN.sure_kalan < 0 then OYUN.sure_kalan = 0 end if OYUN.mod == MOD.NORMAL and OYUN.sure_kalan <= 0 then sfx(2, -1, 60, 3) -- Oyun Bitti Sesi (60 kare = 1sn), Kanal 3 OyunBitir() return end local max_kotu = (OYUN.mod == MOD.NORMAL) and AYAR.MAX_KOTU or AYAR.MAX_KOTU_SONSUZ if OYUN.frame % AYAR.KOTU_SPAWN_RATE == 0 and #OYUN.kotuler < max_kotu then local k = YeniNesne("kotu"); if k then table.insert(OYUN.kotuler, k) end end if OYUN.puan >= OYUN.sonraki_altin_puan and not OYUN.altin then OYUN.altin = YeniNesne("altin") if OYUN.altin then OYUN.sonraki_altin_puan = OYUN.sonraki_altin_puan + AYAR.ALTIN_PUAN_LIMIT end end if OYUN.puan >= OYUN.sonraki_buz_puan and not OYUN.buz then OYUN.buz = YeniNesne("buz") if OYUN.buz then OYUN.sonraki_buz_puan = OYUN.sonraki_buz_puan + AYAR.BUZ_PUAN_LIMIT end end for _, d in ipairs(OYUN.duvarlar) do spr(SPRITE.DUVAR, d.x, d.y) end for i, b in ipairs(OYUN.belalar) do NesneHareketEt(b); spr(SPRITE.IYI, b.x, b.y) end for i, k in ipairs(OYUN.kotuler) do NesneHareketEt(k); spr(SPRITE.KOTU, k.x, k.y) end if OYUN.altin then OYUN.altin.kalan_sure = OYUN.altin.kalan_sure - 1 if OYUN.altin.kalan_sure <= 0 then OYUN.altin = nil else spr(SPRITE.ALTIN, OYUN.altin.x, OYUN.altin.y) end end if OYUN.buz then OYUN.buz.kalan_sure = OYUN.buz.kalan_sure - 1 if OYUN.buz.kalan_sure <= 0 then OYUN.buz = nil else spr(SPRITE.BUZ, OYUN.buz.x, OYUN.buz.y) end end YaziCiz(string.format(T"skor", OYUN.puan), 2, 0) if OYUN.kombo > 0 then YaziCiz(string.format(T"kombo", OYUN.kombo), 85, 0) end if OYUN.mod == MOD.NORMAL then YaziCiz(string.format(T"zaman", math.floor(OYUN.sure_kalan)), 175, 0) end local tiklandi, tx, ty = InputKontrol() if tiklandi then local boyut = AYAR.DUVAR_BOYUT for i=#OYUN.kotuler, 1, -1 do local k = OYUN.kotuler[i] if tx >= k.x and tx < k.x+boyut and ty >= k.y and ty < k.y+boyut then table.remove(OYUN.kotuler, i) OYUN.puan = math.max(0, OYUN.puan - 1) -- ÖLÜM SESİ: ID 3, Not yok, Süre 30 frame, Kanal 3 sfx(3, -1, 30, 3) OyunBitir() return end end if OYUN.altin and tx >= OYUN.altin.x and tx < OYUN.altin.x+boyut and ty >= OYUN.altin.y and ty < OYUN.altin.y+boyut then OYUN.puan = OYUN.puan + 10; OYUN.altin = nil; -- ALTIN SESİ: ID 1, Süre 15 frame, Kanal 1 sfx(1, -1, 15, 1) local b = YeniNesne("bela"); if b then table.insert(OYUN.belalar, b) end return end if OYUN.buz and tx >= OYUN.buz.x and tx < OYUN.buz.x+boyut and ty >= OYUN.buz.y and ty < OYUN.buz.y+boyut then OYUN.puan = OYUN.puan + 5; OYUN.buz = nil; -- BUZ SESİ: ID 1, Süre 15 frame, Kanal 1 sfx(1, -1, 15, 1) local b = YeniNesne("bela"); if b then table.insert(OYUN.belalar, b) end return end local basari = false for i=#OYUN.belalar, 1, -1 do local b = OYUN.belalar[i] if tx >= b.x and tx < b.x+boyut and ty >= b.y and ty < b.y+boyut then table.remove(OYUN.belalar, i) OYUN.kombo = OYUN.kombo + 1 OYUN.kombo_timer = AYAR.KOMBO_SURE OYUN.puan = OYUN.puan + OYUN.kombo OYUN.sure_toplam = OYUN.sure_toplam + AYAR.ZAMAN_BONUS -- NORMAL PUAN SESİ: ID 1, Süre 15 frame, Kanal 1 sfx(1, -1, 15, 1) local max_bela = (OYUN.mod == MOD.NORMAL) and AYAR.MAX_BELA or AYAR.MAX_BELA_SONSUZ if #OYUN.belalar < max_bela then local nb = YeniNesne("bela"); if nb then table.insert(OYUN.belalar, nb) end end basari = true break end end if not basari then OYUN.kombo = 0 end end end function State_Over() cls(0) YaziCiz(T"bitti", OrtalaX(T"bitti"), 40) YaziCiz(string.format(T"skor", OYUN.puan), OrtalaX(string.format(T"skor", OYUN.puan)), 60) YaziCiz(string.format(T"rekor", OYUN.high_score), OrtalaX(string.format(T"rekor", OYUN.high_score)), 70) local tiklandi, mx, my = InputKontrol() local txt = T"yeniden" local tx, ty = OrtalaX(txt), 100 if mx >= tx-5 and mx <= tx+YaziGenisligi(txt)+5 and my >= ty and my <= ty+10 then rectb(tx-5, ty-2, YaziGenisligi(txt)+10, 12, 12) end YaziCiz(txt, tx, ty) if OYUN.puan > OYUN.high_score then OYUN.high_score = OYUN.puan pmem(0, OYUN.high_score) end if tiklandi then sfx(-1) -- Emin olmak için tekrar tüm sesleri sustur OYUN.durum = DURUM.MENU OYUN.frame = 0 end end function State_Yardim() cls(0) YaziCiz(T"yardim_1", OrtalaX(T"yardim_1"), 40) YaziCiz(T"yardim_2", OrtalaX(T"yardim_2"), 50) YaziCiz(T"yardim_3", OrtalaX(T"yardim_3"), 60) YaziCiz(T"yardim_4", OrtalaX(T"yardim_4"), 70) local tiklandi, mx, my = InputKontrol() local txt = T"yardim_5" local tx, ty = OrtalaX(txt), 90 if mx >= tx and mx <= tx+YaziGenisligi(txt) and my >= ty and my <= ty+8 then rectb(tx-2, ty-2, YaziGenisligi(txt)+4, 12, 12) if tiklandi then OYUN.durum = DURUM.MENU OYUN.frame = 0 end end YaziCiz(txt, tx, ty) end function TIC() OYUN.frame = OYUN.frame + 1 if OYUN.durum == DURUM.SPLASH then State_Splash() elseif OYUN.durum == DURUM.DIL_SECIMI then State_DilSecimi() elseif OYUN.durum == DURUM.MENU then State_Menu() elseif OYUN.durum == DURUM.OYUN then State_Game() elseif OYUN.durum == DURUM.BITTI then State_Over() elseif OYUN.durum == DURUM.YARDIM then State_Yardim() end end