Çocuklar İçin Small Basic ile Yılan Oyunu Yapımı 🐍 | Adım Adım Kodlama Eğitimi

Merhaba arkadaşlar! Bugün sıfırdan başlıyoruz: Hem Microsoft Small Basic kurulumunu yapıyoruz hem de ilk büyük projemiz olan Yılan Oyunu (Snake Game)'i kodluyoruz! 🐍💻

Kodlama dünyasına adım atmak isteyen çocuklar ve yeni başlayanlar için Small Basic, karmaşık kodlar yerine mantığı kavramayı sağlayan harika bir araç. Bu videoda hiçbir şey bilmeseniz bile kendi oyununuzu nasıl yapacağınızı öğreneceksiniz.

🛠️ Kurulum Hakkında Not: Small Basic tamamen ücretsizdir. Videoda gösterdiğim resmi web sitesinden indirerek Windows bilgisayarınıza saniyeler içinde kurabilirsiniz. Kurulum sırasında sorun yaşarsanız yorumlarda belirtmekten çekinmeyin!

💡 Neden Small Basic? Microsoft tarafından geliştirilen bu dil, profesyonel dillerin (C#, VB.NET gibi) temelini oluşturur. Bu videodaki yılan oyunu projesiyle değişkenleri, döngüleri ve koşullu ifadeleri (if-else) uygulamalı olarak göreceksiniz.

✅ Kanalıma Abone Olun: Yeni başlayanlar için daha fazla kodlama projesi ve eğlenceli dersler için abone olmayı ve videoyu beğenmeyi unutmayın! 🚀

#SmallBasicKurulum #KodlamaDersleri #YılanOyunu #SnakeGame #ÇocuklarİçinKodlama #YazılımGiriş #EğiticiVideo


Github: https://github.com/isagurbuz002/yilan-oyunu

Kodları:


' Pencere Ayarları

GraphicsWindow.BackgroundColor = "White"

GraphicsWindow.Title = "Pro Yılan Oyunu - Karmaşık Engelli"

GraphicsWindow.Width = 600

GraphicsWindow.Height = 450


' Ana Menü Başlat

AnaMenu:

GraphicsWindow.Clear()

GraphicsWindow.BrushColor = "Black"

GraphicsWindow.FontSize = 30

GraphicsWindow.DrawText(200, 50, "YILAN OYUNU")


GraphicsWindow.FontSize = 18

GraphicsWindow.DrawText(150, 150, "Hız Seçin:")

GraphicsWindow.BrushColor = "Blue"

btn1 = Controls.AddButton("1 - Yavaş", 150, 200)

btn2 = Controls.AddButton("2 - Normal", 250, 200)

btn3 = Controls.AddButton("3 - Hızlı", 350, 200)


hizSecildi = 0

Controls.ButtonClicked = HizSecimi


While hizSecildi = 0

  Program.Delay(100)

EndWhile


' Oyun Kurulumu

OyunKur:

GraphicsWindow.Clear()

GraphicsWindow.BackgroundColor = "White"

uzunluk = 3

boyut = 20

yonX = boyut

yonY = 0

yilanX[1] = 100

yilanY[1] = 100


' --- Karmaşık Engeller Oluştur ---

' 4 adet rastgele bölgede 3'lü bloklar halinde engeller oluşturur

GraphicsWindow.BrushColor = "Black"

engelSayisi = 0

For e = 1 To 4

  anaX = Math.Floor(Math.GetRandomNumber(25)) * boyut

  anaY = Math.Floor(Math.GetRandomNumber(18)) * boyut

  

  ' Her ana engel noktasının etrafına 3 parça ekle (Karmaşık yapı için)

  For j = 1 To 3

    engelSayisi = engelSayisi + 1

    ' Rastgele şekil oluşturmak için ofsetler

    offX = Math.GetRandomNumber(2) - 1 

    offY = Math.GetRandomNumber(2) - 1

    

    eX[engelSayisi] = anaX + (offX * boyut)

    eY[engelSayisi] = anaY + (offY * boyut)

    

    ' Başlangıç noktasına çok yakınsa engeli kaydır

    If eX[engelSayisi] < 150 And eY[engelSayisi] < 150 Then

      eX[engelSayisi] = eX[engelSayisi] + 200

    EndIf

    

    Shapes.AddRectangle(boyut, boyut)

    Shapes.Move(Shapes.AddRectangle(boyut,boyut), eX[engelSayisi], eY[engelSayisi])

  EndFor

EndFor


' Yılanı Oluştur

GraphicsWindow.BrushColor = "DarkGreen"

For i = 1 To uzunluk

  yilan[i] = Shapes.AddRectangle(boyut, boyut)

  yilanX[i] = yilanX[1] - (i-1)*boyut

  yilanY[i] = yilanY[1]

  Shapes.Move(yilan[i], yilanX[i], yilanY[i])

EndFor


' Yem

GraphicsWindow.BrushColor = "Red"

yem = Shapes.AddEllipse(boyut, boyut)

YemYerlestir()


GraphicsWindow.KeyDown = TusBasildi


' --- Ana Oyun Döngüsü ---

While "True"

  yeniX = yilanX[1] + yonX

  yeniY = yilanY[1] + yonY

  

  ' 1. Duvar Çarpma Kontrolü

  If yeniX < 0 Or yeniX >= GraphicsWindow.Width Or yeniY < 0 Or yeniY >= GraphicsWindow.Height Then

    Goto OyunBitti

  EndIf

  

  ' 2. Kendini Yeme Kontrolü

  For i = 1 To uzunluk

    If yeniX = yilanX[i] And yeniY = yilanY[i] Then

      Goto OyunBitti

    EndIf

  EndFor

  

  ' 3. Karmaşık Engellere Çarpma Kontrolü

  For i = 1 To engelSayisi

    If yeniX = eX[i] And yeniY = eY[i] Then

      Goto OyunBitti

    EndIf

  EndFor

  

  ' 4. Yem Yeme Kontrolü

  If yeniX = yemX And yeniY = yemY Then

    uzunluk = uzunluk + 1

    GraphicsWindow.BrushColor = "DarkGreen"

    yilan[uzunluk] = Shapes.AddRectangle(boyut, boyut)

    YemYerlestir()

  EndIf

  

  ' Vücudu Hareket Ettir

  For i = uzunluk To 2 Step -1

    yilanX[i] = yilanX[i-1]

    yilanY[i] = yilanY[i-1]

    Shapes.Move(yilan[i], yilanX[i], yilanY[i])

  EndFor

  

  yilanX[1] = yeniX

  yilanY[1] = yeniY

  Shapes.Move(yilan[1], yilanX[1], yilanY[1])

  

  Program.Delay(gecikme)

EndWhile


OyunBitti:

GraphicsWindow.ShowMessage("Engellere çarptın! Skorun: " + (uzunluk - 3), "OYUN BİTTİ")

Goto AnaMenu


' --- ALT PROGRAMLAR ---

Sub HizSecimi

  sonButon = Controls.LastClickedButton

  If sonButon = btn1 Then

    gecikme = 180

  ElseIf sonButon = btn2 Then

    gecikme = 100

  ElseIf sonButon = btn3 Then

    gecikme = 60

  EndIf

  hizSecildi = 1

EndSub


Sub TusBasildi

  tus = GraphicsWindow.LastKey

  If (tus = "Up" Or tus = "W") And yonY = 0 Then

    yonX = 0

    yonY = -boyut

  ElseIf (tus = "Down" Or tus = "S") And yonY = 0 Then

    yonX = 0

    yonY = boyut

  ElseIf (tus = "Left" Or tus = "A") And yonX = 0 Then

    yonX = -boyut

    yonY = 0

  ElseIf (tus = "Right" Or tus = "D") And yonX = 0 Then

    yonX = boyut

    yonY = 0

  EndIf

EndSub


Sub YemYerlestir

  yemX = Math.Floor(Math.GetRandomNumber(GraphicsWindow.Width / boyut) - 1) * boyut

  yemY = Math.Floor(Math.GetRandomNumber(GraphicsWindow.Height / boyut) - 1) * boyut

  

  ' Yemin engelin içinde doğmadığından emin ol

  For i = 1 To engelSayisi

    If yemX = eX[i] And yemY = eY[i] Then

      YemYerlestir()

    EndIf

  EndFor

  

  Shapes.Move(yem, yemX, yemY)

EndSub