Топ-100
amiga apple retro amiga macintosh

   amigApple Programmers Section>>

 
RIVER RAID LIKE GAME:


; River Raid Benzeri Oyun

; Değişkenlerin Tanımlanması
score = 0
lives = 3
level = 1
enemyCount = 0
bulletCount = 0
maxEnemyCount = 10
gameOver = False
gameStarted = False

; Oyun Başlangıcı
Init:
    Cls
    Call LoadGraphics
    Call LoadSounds
    Print "Made by amigApple"
    Wait(100)
   
    score = 0
    level = 1
    lives = 3
    enemyCount = 0
    bulletCount = 0
    gameOver = False
    gameStarted = False
   
    Call ShowLoadingScreen
    PlayMusic
   
    GoTo MainLoop

; Grafiklerin Yüklenmesi
LoadGraphics:
    ; Sprite yükle
    LoadSprite(1, "player_ship.iff")        ; Oyuncu Gemisi
    LoadSprite(2, "enemy_ship_1.iff")       ; Düşman Gemisi Tipi 1
    LoadSprite(3, "enemy_ship_2.iff")       ; Düşman Gemisi Tipi 2
    LoadSprite(4, "bullet_sprite.iff")      ; Mermi
    Return

; Müzik Yükleme
LoadSounds:
    LoadMod("background_music.mod")          ; Arka plan müziği
    LoadSample(1, "shot_sound.iff")         ; Ateş sesi
    LoadSample(2, "explosion_sound.iff")    ; Patlama sesi
    Return

; Yükleme Ekranı
ShowLoadingScreen:
    Cls
    Print "Loading..."
    Wait(100)
    Return

; Düşman Gemisi Oluşturma
CreateEnemy:
    enemyX = Rnd(640)                         ; Rastgele X konumu
    enemyType = Rnd(2)                        ; 0 veya 1 - farklı düşman türleri
    enemyY = Rnd(200) + 50 ;  alışma
    enemyList[enemyCount] = enemyX + enemyY * 640 + enemyType * 1000
    enemyCount = enemyCount + 1
    Return

; Oyun Döngüsü
MainLoop:
    Cls
    If gameOver Then
        Print "Game Over! Score: " + score
        Print "Press Fire to Restart"
        If MouseButton(1) Then
            GoTo Init
        EndIf
        Wait(1)
        GoTo MainLoop
    EndIf
   
    ; Oyuncu Gemisinin Kontrolü
    If MouseX < 20 Then
        playerX = 20
    ElseIf MouseX > 620 Then
        playerX = 620
    Else
        playerX = MouseX
    EndIf

    DrawPlayer(playerX, 400)                ; Oyuncu gemisini çizer
    DrawEnemies()                            ; Düşmanları çizer
    DrawBullets()                            ; Mermileri çizer

    ; Düşman yaratma
    If FrameCount Mod (60 - level*5) = 0 Then ; Seviye arttıkça düşman yaratma sıklığı azalır
        Call CreateEnemy
    EndIf

    ; Düşmanların hareket ettirilmesi
    Call MoveEnemies

    ; Mermilerin kontrolü
    Call UpdateBullets

    ; Çarpışma Kontrolü
    Call CheckCollisions

    ; Puan güncelleme
    Print "Score: " + score
    Print "Lives: " + lives
    Print "Level: " + level

    ; Seviye geçişi
    If score >= level * 1000 Then
        level = level + 1
        Print "Level Up! New Level: " + level
        Wait(100)
    EndIf

    Wait(1)
    GoTo MainLoop

; Oyuncu Gemisini Çizme
DrawPlayer(x, y):
    Blit(1, x - 16, y - 16)               ; Oyuncu gemisini çiz
    Return

; Düşmanları Çizme
DrawEnemies:
    For i = 0 To enemyCount - 1
        enemyPos = enemyList[i]
        enemyX = enemyPos Mod 640
        enemyY = enemyPos / 640 Mod 1000
        enemyType = enemyPos / 1000

        ; Düşmanı çizme
        If enemyType = 0 Then
            Blit(2, enemyX - 16, enemyY - 16)  ; Tip 1 Düşman
        Else
            Blit(3, enemyX - 16, enemyY - 16)  ; Tip 2 Düşman
        EndIf
    Next i
    Return

; Düşmanları Hareket Ettir
MoveEnemies:
    For i = 0 To enemyCount - 1
        enemyPos = enemyList[i]
        enemyX = enemyPos Mod 640
        enemyY = enemyPos / 640 Mod 1000

        enemyY = enemyY + level                       ; Düşmanların hızını arttır
        enemyList[i] = enemyX + enemyY * 640 + (enemyType * 1000) ; Güncelleme

        ; Düşman ekranın dışına çıktı mı?
        If enemyY > 480 Then
            lives = lives - 1  ; Yaşam kaybet
            enemyList[i] = enemyCount * -1 ; Bu düşmanı yok say
            If lives <= 0 Then
                gameOver = True
            EndIf
        EndIf
    Next i
    Return

; Mermi Ateşleme
FireBullet(x, y):
    bulletX[bulletCount] = x
    bulletY[bulletCount] = y
    bulletCount = bulletCount + 1
    Call PlayShotSound                     ; Ateş sesi çal
    Return

; Mermilerin Kontrolü
UpdateBullets:
    For j = 0 To bulletCount - 1
        bulletY[j] = bulletY[j] - 2 ; Merminin yukarı doğru hareket etmesi
        If bulletY[j] < 0 Then
            bulletY[j] = -1 ; Mermiyi yok say
        EndIf
    Next j
    Return

; Düşmanlar ile Mermiler Arasında Çarpışma Kontrolü
CheckCollisions:
    For i = 0 To enemyCount - 1
        enemyPos = enemyList[i]
        enemyX = enemyPos Mod 640
        enemyY = enemyPos / 640 Mod 1000
        enemyType = enemyPos / 1000

        For j = 0 To bulletCount - 1
            If bulletY[j] >= 0 Then
                If Collides(enemyX, enemyY, bulletX[j], bulletY[j]) Then
                    score = score + 100                ; Düşman yok edilince puan eklenir
                    enemyList[i] = enemyCount * -1    ; Düşmanı yok say
                    bulletY[j] = -1                    ; Mermiyi yok say
                    Call PlayExplosionSound            ; Patlama sesi
                    Exit
                EndIf
            EndIf
        Next j
    Next i
    Return

; Çarpışma Kontrol Fonksiyonu
Collides(enemyX, enemyY, bulletX, bulletY):
    If (bulletY > 0) And (bulletX > enemyX - 16) And (bulletX < enemyX + 16) And (bulletY > enemyY - 16) And (bulletY < enemyY + 16) Then
        Return True
    EndIf
    Return False

; Oyun Başlangıcı
bulletCount = 0
enemyCount = 0
GoTo Init
Rivr Raid like Game

to compile the code, you need to have AMOS Compiler. you can get it as ready distro here:
Amiga Programmer Edition AMOS PRO

Description
Visuals and Sounds: Make sure the names of the visual and sound files used in the game are correct. You should make sure that .iff and .mod sound and music files are available.

Game Logic:

CreateEnemy: Creates random enemy ships.
MainLoop: The game loop controls the player ship, draws enemies and bullets, controls collisions.
FireBullet: Called to fire bullets.
Level Transitions: Increases the level and decreases the frequency of enemy creation when the player reaches a certain score.

Game Over: Designed so that the player sees the "Game Over" message even if the game is over. Just click the mouse to restart.

Background Music and Sound Effects: After the game starts, music starts playing in the background and sound effects are heard every time you shoot and destroy an enemy.

Collision Control: Collision control is performed between the enemy and bullets. Points are added if the bullet hits the enemy.

ps: we prepare it with Turkish comments, but the game in English :)
 
with more complex options:>
; River Raid Benzeri Oyun

; Değişkenlerin Tanımlanması
score = 0
lives = 3
level = 1
enemyCount = 0
bulletCount = 0
maxEnemyCount = 10
gameOver = False
powerUpActive = False
powerUpType = 0
powerUpX = 0
powerUpY = 0

; Oyun Başlangıcı
Init:
    Cls
    Call LoadGraphics
    Call LoadSounds
    Print "Made by amigApple"
    Wait(100)
   
    score = 0
    level = 1
    lives = 3
    enemyCount = 0
    bulletCount = 0
    gameOver = False
    powerUpActive = False
   
    Call ShowLoadingScreen
    PlayMusic
   
    GoTo MainLoop

; Grafiklerin Yüklenmesi
LoadGraphics:
    LoadSprite(1, "player_ship.iff")        ; Oyuncu Gemisi
    LoadSprite(2, "enemy_ship_1.iff")       ; Düşman Gemisi Tipi 1
    LoadSprite(3, "enemy_ship_2.iff")       ; Düşman Gemisi Tipi 2
    LoadSprite(4, "bullet_sprite.iff")      ; Mermi
    LoadSprite(5, "powerup_sprite.iff")     ; Güçlendirici
    Return

; Müzik Yükleme
LoadSounds:
    LoadMod("background_music.mod")          ; Arka plan müziği
    LoadSample(1, "shot_sound.iff")         ; Ateş sesi
    LoadSample(2, "explosion_sound.iff")    ; Patlama sesi
    LoadSample(3, "powerup_sound.iff")      ; Güçlendirici sesi
    Return

; Yükleme Ekranı
ShowLoadingScreen:
    Cls
    Print "Loading..."
    Wait(100)
    Return

; Düşman Gemisi Oluşturma
CreateEnemy:
    enemyX = Rnd(640)                     ; Rastgele X konumu
    enemyType = Rnd(2)                    ; 0 veya 1 - farklı düşman türleri
    enemyY = Rnd(200) + 50                 ; Yüksekliği ayarlar
    enemyList[enemyCount] = enemyX + enemyY * 640 + enemyType * 1000
    enemyCount = enemyCount + 1
    Return

; Oyun Döngüsü
MainLoop:
    Cls
    If gameOver Then
        Print "Game Over! Score: " + score
        Print "Press Fire to Restart"
        If MouseButton(1) Then
            GoTo Init
        EndIf
        Wait(1)
        GoTo MainLoop
    EndIf
   
    ; Oyuncu Gemisinin Kontrolü
    If MouseX < 20 Then
        playerX = 20
    ElseIf MouseX > 620 Then
        playerX = 620
    Else
        playerX = MouseX
    EndIf

    DrawPlayer(playerX, 400)                ; Oyuncu gemisini çizer
    DrawEnemies()                            ; Düşmanları çizer
    DrawBullets()                            ; Mermileri çizer
    Call UpdatePowerUp()                     ; Güçlendiriciyi güncelle

    ; Düşman yaratma
    If FrameCount Mod (60 - level * 5) = 0 Then ; Seviye arttıkça düşman yaratma sıklığı azalır
        Call CreateEnemy
    EndIf

    ; Düşmanların hareket ettirilmesi
    Call MoveEnemies

    ; Mermilerin kontrolü
    Call UpdateBullets

    ; Çarpışma Kontrolü
    Call CheckCollisions

    ; Puan güncelleme
    Print "Score: " + score
    Print "Lives: " + lives
    Print "Level: " + level

    ; Güçlendirici düşürme
    If Not powerUpActive And (FrameCount Mod 300 = 0) Then
        powerUpType = Rnd(2)                 ; 0: Mermi Hızlandirici 1: Can
        powerUpX = Rnd(620) + 20              ; Rastgele X konumu
        powerUpY = 0                          ; Üstten düşmeli
        powerUpActive = True
    EndIf

    ; Seviye geçişi
    If score >= level * 1000 Then
        level = level + 1
        Print "Level Up! New Level: " + level
        Wait(100)
    EndIf

    Wait(1)
    GoTo MainLoop

; Oyuncu Gemisini Çizme
DrawPlayer(x, y):
    Blit(1, x - 16, y - 16)               ; Oyuncu gemisini çiz
    Return

; Düşmanları Çizme
DrawEnemies:
    For i = 0 To enemyCount - 1
        enemyPos = enemyList[i]
        enemyX = enemyPos Mod 640
        enemyY = enemyPos / 640 Mod 1000
        enemyType = enemyPos / 1000

        ; Düşmanı çizme
        If enemyType = 0 Then
            Blit(2, enemyX - 16, enemyY - 16)  ; Tip 1 Düşman
        Else
            Blit(3, enemyX - 16, enemyY - 16)  ; Tip 2 Düşman
        EndIf
    Next i
    Return

; Düşmanları Hareket Ettir
MoveEnemies:
    For i = 0 To enemyCount - 1
        enemyPos = enemyList[i]
        enemyX = enemyPos Mod 640
        enemyY = enemyPos / 640 Mod 1000

        enemyY = enemyY + level                       ; Düşmanların hızını arttır
        enemyList[i] = enemyX + enemyY * 640 + (enemyType * 1000) ; Güncelleme

        ; Düşman ekranın dışına çıktı mı?
        If enemyY > 480 Then
            lives = lives - 1  ; Yaşam kaybet
            enemyList[i] = enemyCount * -1 ; Bu düşmanı yok say
            If lives <= 0 Then
                gameOver = True
            EndIf
        EndIf
    Next i
    Return

; Güçlendiriciyi Çizme
DrawPowerUp:
    If powerUpActive Then
        Blit(5, powerUpX - 16, powerUpY - 16)    ; Güçlendiriciyi çiz
    EndIf
    Return

; Güçlendiricinin Güncellenmesi
UpdatePowerUp:
    If powerUpActive Then
        powerUpY = powerUpY + 2                   ; Güçlendiricinin düşmesini sağla
        If powerUpY > 480 Then                     ; Ekranın dışına çıktı mı?
            powerUpActive = False
        EndIf
        Call DrawPowerUp                          ; Güçlendiriciyi çiz
    EndIf
    Return

; Mermi Ateşleme
FireBullet(x, y):
    bulletX[bulletCount] = x
    bulletY[bulletCount] = y
    bulletCount = bulletCount + 1
    Call PlayShotSound                     ; Ateş sesi çal
    Return

; Mermilerin Kontrolü
UpdateBullets:
    For j = 0 To bulletCount - 1
        bulletY[j] = bulletY[j] - 2 ; Merminin yukarı doğru hareket etmesi
        If bulletY[j] < 0 Then
            bulletY[j] = -1 ; Mermiyi yok say
        EndIf
    Next j
    Return

; Düşmanlar ile Mermiler Arasında Çarpışma Kontrolü
CheckCollisions:
    For i = 0 To enemyCount - 1
        enemyPos = enemyList[i]
        enemyX = enemyPos Mod 640
        enemyY = enemyPos / 640 Mod 1000
        enemyType = enemyPos / 1000

        For j = 0 To bulletCount - 1
            If bulletY[j] >= 0 Then
                If Collides(enemyX, enemyY, bulletX[j], bulletY[j]) Then
                    score = score + 100                ; Düşman yok edilince puan eklenir
                    enemyList[i] = enemyCount * -1    ; Düşmanı yok say
                    bulletY[j] = -1                    ; Mermiyi yok say
                    Call PlayExplosionSound            ; Patlama sesi
                    Exit
                EndIf
            EndIf
        Next j

        ; Güçlendirici ile çarpışma kontrolü
        If powerUpActive Then
            If Collides(powerUpX, powerUpY, playerX, 400) Then
                If powerUpType = 0 Then
                    bulletCount = Max(0, bulletCount + 1) ; Mermi sayısını arttır
                Else
                    lives = Min(lives + 1, 5)   ; Can arttır
                EndIf
                powerUpActive = False           ; Güçlendirici alınmış
                Call PlayPowerUpSound          ; Güçlendirici sesi çal
            EndIf
        EndIf
    Next i
    Return

; Çarpışma Kontrol Fonksiyonu
Collides(targetX, targetY, objX, objY):
    If (objY > 0) And (objX > targetX - 16) And (objX < targetX + 16) And (objY > targetY - 16) And (objY < targetY + 16) Then
        Return True
    EndIf
    Return False

; Oyun Başlangıcı
bulletCount = 0
enemyCount = 0
GoTo Init

Descriptions
Boosters:

Boosters that drop randomly after enemies are destroyed provide extra advantages to the player.
Booster types can increase the player's health or give additional bullets.
Enemy Ships:

Booster ships move upwards depending on the level, providing both difficulty and continuity.
In-Game Support:

Throughout gameplay, a booster is destroyed every 300 frames and updated according to a certain pattern.
Graphics and Sounds:

At the beginning of the game, the player is supported by the "Made by amigApple" message with other visuals and sounds.
Level Passes:

A points system is used to increase the player's experience as they level up.
2022 @amigApple Software - Hardware