Qbasic ve Çok Boyutlu Diziler
Çok Boyutlu Dizilerle İlgili Uygulamalar
Otopark Uygulaması
CLS
DIM OtoPark(4, 5) AS STRING
OtoParkDurumu:
FOR Kat = 0 TO 4
PRINT "--------------"; Kat + 1; ". Kat-----------------"
FOR KattakiArac = 0 TO 5
PRINT , ' 8 karakter ileri al
PRINT KattakiArac + 1; ". Park Yeri ";
AracSahibi$ = OtoPark$(Kat, KattakiArac)
IF LEN(AracSahibi$) = 0 THEN PRINT "Bos" ELSE PRINT AracSahibi$
NEXT
PRINT 'Alt Satira Gec
NEXT
ParkGirisi:
INPUT "Aracin Park Edilecegi Kat No ", KatNo
INPUT "Aracin Park Edilecegi Sira No ", SiraNo
INPUT "Aracin Plakasi", AracinPlakasi$
INPUT "Aracin Sahibi", AracinSahibi$
IF LEN(OtoPark$(KatNo - 1, SiraNo - 1)) > 0 THEN
PRINT "Park Alani Dolu"
DO: LOOP WHILE INKEY$ = ""
GOTO OtoParkDurumu
END IF
OtoPark$(KatNo - 1, SiraNo - 1) = TIME$ + " " + AracinPlakasi$ + " " + AracinSahibi$
GOTO OtoParkDurumu
DIM OtoPark(4, 5) AS STRING
OtoParkDurumu:
FOR Kat = 0 TO 4
PRINT "--------------"; Kat + 1; ". Kat-----------------"
FOR KattakiArac = 0 TO 5
PRINT , ' 8 karakter ileri al
PRINT KattakiArac + 1; ". Park Yeri ";
AracSahibi$ = OtoPark$(Kat, KattakiArac)
IF LEN(AracSahibi$) = 0 THEN PRINT "Bos" ELSE PRINT AracSahibi$
NEXT
PRINT 'Alt Satira Gec
NEXT
ParkGirisi:
INPUT "Aracin Park Edilecegi Kat No ", KatNo
INPUT "Aracin Park Edilecegi Sira No ", SiraNo
INPUT "Aracin Plakasi", AracinPlakasi$
INPUT "Aracin Sahibi", AracinSahibi$
IF LEN(OtoPark$(KatNo - 1, SiraNo - 1)) > 0 THEN
PRINT "Park Alani Dolu"
DO: LOOP WHILE INKEY$ = ""
GOTO OtoParkDurumu
END IF
OtoPark$(KatNo - 1, SiraNo - 1) = TIME$ + " " + AracinPlakasi$ + " " + AracinSahibi$
GOTO OtoParkDurumu
Amiral Battı Oyunu
CLS
RANDOMIZE TIMER
DIM Koordinatlar(4, 1) AS INTEGER
DIM Gemiler(4, 1) AS INTEGER
'Oyun Koordinatlari Sifirlaniyor
FOR x = 0 TO 4
FOR y = 0 TO 1
PRINT x; y, 'Noktali virgul yanina yazmak icin, Virgul 8 karakter ileri atmak icin
Gemiler(x, y) = 0
NEXT
PRINT 'Alt satira gecmesi icin
NEXT
'Gemiler Rast Gele Yerlestiriliyor
PRINT : PRINT "--------------Gemilerin Oldugu Koordinat-------------"
FOR Tut = 0 TO 3
XKordinat = INT(RND * 5)
YKordinat = INT(RND * 2)
Gemiler(XKordinat, YKordinat) = 1
PRINT "("; XKordinat; YKordinat; ")",
NEXT
PRINT : PRINT : PRINT "Koordinat Giriniz "
DO
INPUT XGirilen, YGirilen
IF XGirilen = 0 THEN
EXIT DO
ELSEIF Gemiler(XGirilen, YGirilen) = 1 THEN
PRINT "Gemi Vuruldu ("; XGirilen; YGirilen; ")"
ELSE
PRINT "Gemi Vurulamadi"
END IF
LOOP
RANDOMIZE TIMER
DIM Koordinatlar(4, 1) AS INTEGER
DIM Gemiler(4, 1) AS INTEGER
'Oyun Koordinatlari Sifirlaniyor
FOR x = 0 TO 4
FOR y = 0 TO 1
PRINT x; y, 'Noktali virgul yanina yazmak icin, Virgul 8 karakter ileri atmak icin
Gemiler(x, y) = 0
NEXT
PRINT 'Alt satira gecmesi icin
NEXT
'Gemiler Rast Gele Yerlestiriliyor
PRINT : PRINT "--------------Gemilerin Oldugu Koordinat-------------"
FOR Tut = 0 TO 3
XKordinat = INT(RND * 5)
YKordinat = INT(RND * 2)
Gemiler(XKordinat, YKordinat) = 1
PRINT "("; XKordinat; YKordinat; ")",
NEXT
PRINT : PRINT : PRINT "Koordinat Giriniz "
DO
INPUT XGirilen, YGirilen
IF XGirilen = 0 THEN
EXIT DO
ELSEIF Gemiler(XGirilen, YGirilen) = 1 THEN
PRINT "Gemi Vuruldu ("; XGirilen; YGirilen; ")"
ELSE
PRINT "Gemi Vurulamadi"
END IF
LOOP
Puan Toplayan Yılan Uygulaması
CLS
DIM Mayin(79, 23) AS INTEGER
DIM Izler(79, 23) AS INTEGER
RANDOMIZE TIMER
'Mayin Dizi icerisine rast gele degerler atiliyor
FOR Rastgele = 0 TO 100
RastgeleX = INT(RND * 80)
RastgeleY = INT(RND * 24)
Mayin(RastgeleX, RastgeleY) = 1
NEXT
'Mayin Dizisi icersindeki degerler ekrana yaziliyor
FOR y = 1 TO 23
FOR x = 1 TO 79
LOCATE y, x
IF Mayin(x, y) = 1 THEN PRINT "1"; ELSE PRINT "0";
NEXT
NEXT
'Yilan Kodlari
x = 25: y = 15: Puan = 0
DO
BasilanTus$ = INKEY$
SELECT CASE BasilanTus$
CASE CHR$(27) 'cikis
EXIT DO
CASE CHR$(0) + CHR$(72)
y = y - 1
IF Izler(x, y) = 1 THEN
LOCATE 12, 30: COLOR 12, 0: PRINT "Oyun Bitti"
END
END IF
IF Mayin(x, y) = 1 THEN Puan = Puan + 1
Izler(x, y) = 1
CASE CHR$(0) + CHR$(80)
y = y + 1
IF Izler(x, y) = 1 THEN
LOCATE 12, 30: COLOR 12, 0: PRINT "Oyun Bitti"
END
END IF
IF Mayin(x, y) = 1 THEN Puan = Puan + 1
Izler(x, y) = 1
CASE CHR$(0) + CHR$(75)
x = x - 1
IF Izler(x, y) = 1 THEN
LOCATE 12, 30: COLOR 12, 0: PRINT "Oyun Bitti"
END
END IF
IF Mayin(x, y) = 1 THEN Puan = Puan + 1
Izler(x, y) = 1
CASE CHR$(0) + CHR$(77)
x = x + 1
IF Izler(x, y) = 1 THEN
LOCATE 12, 30: COLOR 12, 0: PRINT "Oyun Bitti"
END
END IF
IF Mayin(x, y) = 1 THEN Puan = Puan + 1
Izler(x, y) = 1
END SELECT
COLOR 4, 0
LOCATE y, x: PRINT CHR$(219)
COLOR 15, 0: LOCATE 22, 75: PRINT "Puan: " + STR$(Puan)
LOOP
Verilen Koordinatlara Hareket Eden Nesne
DIM HareketNoktalari(99, 1) AS INTEGER
'Hareket Noktalari Girisi
'DO
' INPUT "Koordinat Giriniz (x,y) ", KoordinatX, KoordinatY
' IF KoordinatX < 79 OR KoordinatY < 23 THEN
' HareketNoktalari(KoordinatSiraNo, 0) = KoordinatX
' HareketNoktalari(KoordinatSiraNo, 1) = KoordinatY
' KoordinatSiraNo = KoordinatSiraNo + 1
' ELSE PRINT "Koordinat Sinirlari 79, 23"
' END IF
' INPUT "Devam mi (E/H)", Devam$
' IF Devam$ <> "E" THEN EXIT DO
'LOOP
HareketNoktalari(0, 0) = 5
HareketNoktalari(0, 1) = 9
HareketNoktalari(1, 0) = 15
HareketNoktalari(1, 1) = 19
CLS
'Eksenleri Yazdir
'FOR XEksen = 1 TO 17
' LOCATE 1, XEksen
' PRINT XEksen;
'NEXT
'FOR YEkseni = 1 TO 20
' LOCATE YEkseni, 1:
' PRINT YEkseni
'NEXT
SimdikiX = 1: SimdikiY = 1
FOR Say = 0 TO 99
IF HareketNoktalari(Say, 0) > 0 THEN
XFark = HareketNoktalari(Say, 0) - SimdikiX
IF XFark > 0 THEN Yon = 1 ELSE Yon = -1
FOR Don = 0 TO ABS(XFark)
SimdikiX = SimdikiX + Yon
'SLEEP 1
LOCATE SimdikiY, SimdikiX: PRINT CHR$(219)
NEXT
YFark = HareketNoktalari(Say, 1) - SimdikiY
IF YFark > 0 THEN Yon = 1 ELSE Yon = -1
FOR Don = 0 TO ABS(YFark)
SimdikiY = SimdikiY + Yon
'SLEEP 1
LOCATE SimdikiY, SimdikiX: PRINT CHR$(219)
NEXT
END IF
NEXT
Pic Adaptasyonu
TRISB=0
PORTB=0
'DIM HareketNoktalari(99, 1) AS INTEGER
HareketNoktalari VAR BIT[99]
HareketNoktalariX VAR BIT[99]
HareketNoktalariY VAR BIT[99]
SimdikiX VAR BIT
SimdikiY VAR BIt
Say VAR BIT
XFark VAR BIT
Don VAR BIT
'Hareket Noktalari Girisi
'DO
' INPUT "Koordinat Giriniz (x,y) ", KoordinatX, KoordinatY
' IF KoordinatX < 79 OR KoordinatY < 23 THEN
' HareketNoktalari(KoordinatSiraNo, 0) = KoordinatX
' HareketNoktalari(KoordinatSiraNo, 1) = KoordinatY
' KoordinatSiraNo = KoordinatSiraNo + 1
' ELSE PRINT "Koordinat Sinirlari 79, 23"
' END IF
' INPUT "Devam mi (E/H)", Devam$
' IF Devam$ <> "E" THEN EXIT DO
'LOOP
HareketNoktalari[0]=1
HareketNoktalariX[0] = 15
HareketNoktalariY[0] = 9
'HareketNoktalari(1, 0) = 15
'HareketNoktalari(1, 1) = 19
'CLS
'Eksenleri Yazdir
'FOR XEksen = 1 TO 17
' LOCATE 1, XEksen
' PRINT XEksen;
'NEXT
'FOR YEkseni = 1 TO 20
' LOCATE YEkseni, 1:
' PRINT YEkseni
'NEXT
SimdikiX = 1: SimdikiY = 1
FOR Say = 0 TO 99
IF HareketNoktalari[Say] > 0 THEN
XFark = HareketNoktalariX[Say] - SimdikiX
'IF XFark > 0 THEN Yon = 1 ELSE Yon = -1
FOR Don = 0 TO ABS(XFark)
'SimdikiX = SimdikiX + Yon
'SLEEP 1
'LOCATE SimdikiY, SimdikiX: PRINT CHR$(219)
IF XFark>0 THEN
'STEP MOTORU SAAT YÖNÜNDE ÇEVİR
PORTB=%00000001
'PAUSE 2000
PORTB=%00000010
'PAUSE 2000
PORTB=%00000100
'PAUSE 2000
PORTB=%00001000
'PAUSE 2000
PORTB=%00000001
PAUSE 2000
ELSE
'STEP MOTORU SAAT YÖNÜ TERSINDE ÇEVİR
PORTB=%00000001
'PAUSE 2000
PORTB=%00001000
'PAUSE 2000
PORTB=%00000100
'PAUSE 2000
PORTB=%00000010
'PAUSE 2000
PORTB=%00000001
ENDIF
NEXT Don
'YFark = HareketNoktalari(Say, 1) - SimdikiY
'IF YFark > 0 THEN Yon = 1 ELSE Yon = -1
'FOR Don = 0 TO ABS(YFark)
'SimdikiY = SimdikiY + Yon
'SLEEP 1
'LOCATE SimdikiY, SimdikiX: PRINT CHR$(219)
'NEXT
ENDIF
NEXT Say
END
Yorumunuzu Ekleyin