Qbasic ve Çok Boyutlu Diziler

Çok Boyutlu Dizilerle İlgili Uygulamalar

Otopark Uygulaması

Çok Boyutlu Diziler

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
 

 

Çok Boyutlu Diziler

 

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

 

 

Çok Boyutlu Diziler

Çok Boyutlu Diziler

 

Puan Toplayan Yılan Uygulaması

Qbasic ve Çok Boyutlu Diziler

 


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

Qbasic ve Çok Boyutlu Diziler



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
 

 

Qbasic ve Çok Boyutlu Diziler

Qbasic ve Çok Boyutlu Diziler

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