atarionline.pl LLM nakarmiony wiedzą o ATARI BASIC-u - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthorTygrys1982
      • CommentTime28 Mar 2026 14:42
       
      Cześć wszystkim.
      Ostatnio Kaz opublikował wpis dotyczący ankiety AI na demoscenie. To zainspirowało mnie do pobawienia się NotebookiemLLM od Google'a i nakarmienia modelu AI wiedzą z książek na temat programowania w ATARI BASIC-u. W efekcie powstał modelLLM udostępniony publicznie, który wie jak wygląda programowanie w tym języku na małe Atari. Przetestowałem go i jest bardzo pomocny w zabawie w tym języku. Sprawdźcie sami. Jest dostępny pod adresem: ->link<-
      • 2:
         
        CommentAuthorKaz
      • CommentTime30 Mar 2026 15:51 zmieniony
       
      Bardzo ciekawa inicjatywa. Dzięki Mikołaj. Można łatwiej dopytać o jakiś niuans z Atari Basica, który się zapomniało. A i proste programy wygeneruje. Testowo poprosiłem o trójkaty Sierpińskiego, paręnaście sekund i jest listing. Przeklejka do Altirry i działa :)
      • 3: CommentAuthortebe
      • CommentTime30 Mar 2026 17:07
       
      ciężkie czasy, teraz to już nie napiszę "napisz.se" ;)
      • 4:
         
        CommentAuthorKaz
      • CommentTime30 Mar 2026 17:08
       
      Prawdę żekłeś azaliż.
      • 5:
         
        CommentAuthorPecus
      • CommentTime31 Mar 2026 10:03 zmieniony
       
      No ładne cacko :)
      Dałem takiego prompta:
      "Napisz prostą grę działającą w trybie tekstowym 0, sterowaną przy pomocy klawiszy strzałek. Niech to będzie klon gry arkanoid"
      I wyszło to za pierwszym podejściem:


      10 GRAPHICS 0:POKE 752,1:? "}":SC=0:REM Inicjalizacja i ukrycie kursora [3, 4]
      20 PX=18:REM Pozycja paletki
      30 BX=20:BY=15:DX=1:DY=-1:REM Startowa pozycja i kierunek pilki [5]
      40 FOR I=5 TO 35:POSITION I,2:? "#":POSITION I,3:? "#":NEXT I:REM Rysowanie cegiel
      50 POSITION PX,22:? "===":REM Rysowanie paletki [5]
      100 REM --- GLOWNA PETLA GRY ---
      110 POSITION BX,BY:? " ":REM Wymazanie poprzedniej pozycji pilki
      120 BX=BX+DX:BY=BY+DY:REM Aktualizacja pozycji pilki [5, 6]
      130 IF BX<=0 OR BX>=39 THEN DX=-DX:BX=BX+DX:REM Odbicie od scian bocznych [7]
      140 IF BY<=0 THEN DY=-DY:BY=BY+DY:REM Odbicie od sufitu
      150 IF BY>=23 THEN POSITION 15,12:? "GAME OVER":END:REM Skucha - dno ekranu
      160 LOCATE BX,BY,V:IF V<>32 THEN GOTO 300:REM Sprawdzenie kolizji [8, 9]
      170 POSITION BX,BY:? "*":REM Rysowanie pilki
      200 REM --- OBSLUGA KLAWIATURY ---
      210 K=PEEK(764):IF K=255 THEN GOTO 265:REM Brak wcisnietego klawisza [10, 11]
      220 POKE 764,255:REM Reset bufora klawiatury [11]
      230 POSITION PX,22:? " ":REM Wymazanie starej paletki
      240 IF K=6 AND PX>0 THEN PX=PX-2:REM Strzalka w LEWO (kod 6) [2]
      250 IF K=7 AND PX<37 THEN PX=PX+2:REM Strzalka w PRAWO (kod 7) [2]
      260 POSITION PX,22:? "===":REM Rysowanie nowej paletki
      265 FOR W=1 TO 20:NEXT W:GOTO 100:REM Opoznienie i powrot do petli
      300 REM --- LOGIKA KOLIZJI ---
      310 IF BY=22 THEN DY=-DY:GOTO 170:REM Odbicie od paletki
      320 POSITION BX,BY:? " ":DY=-DY:SC=SC+10:GOTO 100:REM Zniszczenie cegly i odbicie


      No repetycję klawiatury trzeba by poprawić, ale działa.
      • 6:
         
        CommentAuthorAtariteca
      • CommentTime1 Apr 2026 18:37 zmieniony
       
      I asked it to write a small Snake/Tron game. Here's the result:

      10 GRAPHICS 0:PRINT "NIVEL: 1=FACIL 2=MEDIO 3=DIFICIL":INPUT D
      20 IF D<1 OR D>3 THEN GOTO 10:REM VALIDAR ENTRADA [1]
      30 SP=45-(D*12):SC=0:REM CALCULAR VELOCIDAD Y PUNTOS [2]
      40 GRAPHICS 1+16:POKE 752,1:REM MODO 1 (20X24) SIN VENTANA Y OCULTAR CURSOR [3-5]
      50 SETCOLOR 4,0,0:REM FONDO NEGRO [6, 7]
      60 SETCOLOR 0,9,10:REM COLOR CELESTE PARA MAYUSCULAS (RASTRO) [7, 8]
      70 SETCOLOR 1,3,10:REM COLOR ROJO PARA MINUSCULAS (SCORE) [8]
      80 X=10:Y=12:DX=1:DY=0:REM POSICION INICIAL Y DIRECCION
      90 POSITION X,Y:PRINT #6;"*";:REM DIBUJAR PUNTO DE INICIO [9]
      100 S=STICK(0):IF S=15 THEN GOTO 160:REM LEER JOYSTICK; 15 ES REPOSO [10-12]
      110 IF S=14 THEN DX=0:DY=-1:REM ARRIBA [10, 12]
      120 IF S=13 THEN DX=0:DY=1:REM ABAJO [10, 12]
      130 IF S=11 THEN DX=-1:DY=0:REM IZQUIERDA [10, 12]
      140 IF S=7 THEN DX=1:DY=0:REM DERECHA [10, 12]
      160 X=X+DX:Y=Y+DY:REM ACTUALIZAR POSICION [10, 13]
      170 IF X<0 OR X>19 OR Y<0 OR Y>23 THEN GOTO 500:REM LIMITES DE PANTALLA MODO 1 [10]
      180 LOCATE X,Y,C:IF C<>32 THEN GOTO 500:REM COLISION SI NO ES ESPACIO (32) [3, 12, 14]
      190 POSITION X,Y:PRINT #6;"*";:REM IMPRIMIR RASTRO EN CELESTE [15]
      195 SC=SC+1:POSITION 0,0:PRINT #6;"score:";SC:REM MOSTRAR PUNTOS EN ROJO [3, 16]
      197 SOUND 0,6*(ABS(21-X)+1),10,4:REM SONIDO DINAMICO SEGUN POSICION [10]
      200 FOR W=1 TO SP:NEXT W:GOTO 100:REM BUCLE DE TIEMPO Y RETORNO [2, 17]
      500 POSITION 5,12:PRINT #6;"GAME OVER":REM MENSAJE FINAL [18-20]
      505 FOR E=15 TO 0 STEP -1:SOUND 0,5,0,E:FOR Q=1 TO 10:NEXT Q:NEXT E:REM SONIDO EXPLOSION [21]
      510 IF PEEK(53279)<>6 THEN GOTO 510:REM ESPERAR A PRESIONAR START [22-25]
      520 GRAPHICS 0:END:REM REGRESAR A MODO TEXTO Y FINALIZAR [25, 26]
      • 7:
         
        CommentAuthorKaz
      • CommentTime2 Apr 2026 15:10 zmieniony
       
      Atariteca - I put [ code basic] and [ /code ] into your post to make the listing easier to read and saveable in ATASCII format.
      • 8: CommentAuthorAtaripuzzle
      • CommentTime2 Apr 2026 15:19 zmieniony
       
      Pecus napisał: "No repetycję klawiatury trzeba by poprawić, ale działa."

      Tu dżojstick:

      (nie dodaje w kodzie basica bo do Altirry źle kopiuje przez paste)
      10 GRAPHICS 0:POKE 752,1:? "}":SC=0:REM Inicjalizacja i ukrycie kursora [3, 4]
      20 PX=18:REM Pozycja paletki
      30 BX=20:BY=15:DX=1:DY=-1:REM Startowa pozycja i kierunek pilki [5]
      40 FOR I=5 TO 35:POSITION I,2:? "#":POSITION I,3:? "#":NEXT I:REM Rysowanie cegiel
      50 POSITION PX,22:? "===":REM Rysowanie paletki [5]
      100 REM --- GLOWNA PETLA GRY ---
      110 POSITION BX,BY:? " ":REM Wymazanie poprzedniej pozycji pilki
      120 BX=BX+DX:BY=BY+DY:REM Aktualizacja pozycji pilki [5, 6]
      130 IF BX<=0 OR BX>=39 THEN DX=-DX:BX=BX+DX:REM Odbicie od scian bocznych [7]
      140 IF BY<=0 THEN DY=-DY:BY=BY+DY:REM Odbicie od sufitu
      150 IF BY>=23 THEN POSITION 15,12:? "GAME OVER":END:REM Skucha - dno ekranu
      160 LOCATE BX,BY,V:IF V<>32 THEN GOTO 300:REM Sprawdzenie kolizji [8, 9]
      170 POSITION BX,BY:? "*":REM Rysowanie pilki
      200 REM --- OBSLUGA JOYSTICKA ---
      210 S=STICK(0)
      220 POSITION PX,22:? " ":REM Wymazanie starej paletki
      230 IF S=11 AND PX>0 THEN PX=PX-2:REM JOYSTICK LEWO
      240 IF S=7 AND PX<37 THEN PX=PX+2:REM JOYSTICK PRAWO
      250 POSITION PX,22:? "===":REM Rysowanie nowej paletki
      265 FOR W=1 TO 20:NEXT W:GOTO 100:REM Opoznienie i powrot do petli
      300 REM --- LOGIKA KOLIZJI ---
      310 IF BY=22 THEN DY=-DY:GOTO 170:REM Odbicie od paletki
      320 POSITION BX,BY:? " ":DY=-DY:SC=SC+10:GOTO 100:REM Zniszczenie cegly i odbicie

      Kopiowanie z kodu Atascii do Altirry na atarionline źle dodaje spacje w lini 220 - zamiast trzech spacji w cudzysłowiu jest jedna
      (220 Wymazanie starej paletki)
      należy dodać poprawne spacje na wielkość paletki
      • 9:
         
        CommentAuthorKaz
      • CommentTime2 Apr 2026 15:33
       
      Kopiowanie z kodu do Altirry na atarionline źle dodaje spacje


      Nie rozumiem. Mógłbyś doprecyzować?
      • 10: CommentAuthorAtaripuzzle
      • CommentTime2 Apr 2026 15:48 zmieniony
       
      atarionline źle dodaje spacje w lini 220 (przy kopiuj > paste do Altirry) - zamiast trzech spacji w cudzysłowiu jest jedna
      (220 Wymazanie starej paletki)
      należy dodać poprawne spacje na wielkość paletki

      Najlepiej zapisać "zapisz jako atascii wkleić do atr - wtedy poprawnie program działa.
      • 11:
         
        CommentAuthorKaz
      • CommentTime2 Apr 2026 16:05
       
      Nie jest to prawda. Zrobiłem test. Najpierw z Twoją jedną spacją, potem z trzema. Wkleja się do Altirry poprawnie. Sprawdź, czy poprawnie skopiowałeś i poprawnie wklejasz.
      • 12: CommentAuthorAtaripuzzle
      • CommentTime2 Apr 2026 16:09 zmieniony
       
      To nie jest jedna spacja - sprawdzałem poprzez edycję posta - to są 3 spacje, ale żle je wyświetla w poście
      U mnie skopiowanie tekstu z posta 8 (mojego)- do altirry źle dodaje spacje - jest jedna zamiast 3 w lini 220. Jak edytuje posta z pozycji edytuj są widoczne 3 spacje i dobrze wkleja
      • 13:
         
        CommentAuthorKaz
      • CommentTime2 Apr 2026 16:17
       
      A więc kopiuje prawidłowo. Jak ma skopiować inaczej niż jedną spację, skoro w Twoim listingu w poście 8 w lini 220 jest jedna spacja?
      • 14:
         
        CommentAuthorKaz
      • CommentTime2 Apr 2026 16:18 zmieniony
       
      Zrobiłem testy i już rozumiem. Chodzi Ci o to, że w listingu są trzy spacje, a widać jedną! A to przepraszam. Faktycznie coś silnik forum zmienia. Nie wiem która z poprawek kolegów tu obecnych, bo kilka osób to poprawiało.
      • 15: CommentAuthorAtaripuzzle
      • CommentTime2 Apr 2026 16:20 zmieniony
       
      tak - strona Atarionline jest skopana - kopiuje prawidłowo - ale źle wyświetla na Atarionline
      • 16:
         
        CommentAuthorKaz
      • CommentTime2 Apr 2026 16:23
       
      No właśnie, kopiuje prawidłowo, ale źle wyświetla. To jest istota rzeczy.


      Cosi - mógłbyś rzucić okiem, bo jeżeli dobrze pamiętam dodawałeś kod tych fajnych znaczników programowania - czy to tam coś się dzieje ze skracaniem liczby spacji czy odpowiedzialny jest jakiś inny mechanizm? Z góry dziękuję za pomoc.
      • 17:
         
        CommentAuthorCosi
      • CommentTime2 Apr 2026 16:51
       
      Kaz: Już Ci pisałem prywatnie, ale napiszę jeszcze tutaj dla potomności.

      Powinno pomóc dodanie stylu "white-space: break-spaces" do elementu, w którym jest listing, czyli w tym przypadku:
      <div class="quote"><span style="font-family:courier,monospace; font-size:12px">

      zamienić na:
      <div class="quote"><span style="font-family:courier,monospace; font-size:12px; white-space:break-spaces">
      • 18:
         
        CommentAuthorKaz
      • CommentTime2 Apr 2026 18:10 zmieniony
       
      Zidenetyfikowany plik PHP gdzie to siedzi, poprawiony by Cosi, wygląda na to, że działa :)

      PS. Ataripuzzle - dziękuję za zgłoszenie błędu.
      • 19:
         
        CommentAuthorKaz
      • CommentTime2 Apr 2026 19:42 zmieniony
       
      A to taki programik dla Ciebie, przy okazji test :)

      0 DIM A$(60):A$=" Dziekujemy AtariPuzzle! "
      20 GRAPHICS 2+16:POKE 752,1
      30 FOR I=1 TO LEN(A$)-19
      40 C=I-INT(I/16)*16
      50 POSITION 0,5:PRINT #6;A$(I,I+19)
      70 SETCOLOR 0,C,10
      80 SETCOLOR 4,15-C,2
      90 FOR D=1 TO 50:NEXT D
      100 NEXT I
      110 GOTO 30
      • 20: CommentAuthorAtaripuzzle
      • CommentTime3 Apr 2026 21:11 zmieniony
       
      Fajny 10 linijkowiec - dzięki
      • 21: CommentAuthorAtaripuzzle
      • CommentTime4 Apr 2026 18:54 zmieniony
       
      W nieskomplikowanych programach to AI radzi sobie świetnie.
      Niestety nie potrafił mi dodać teleportacji rakiety po zbliżeniu do czarnej dziury (black hole "B") w poniższym programie. W środku pętli, wyjścia z niej, prawie nic nie potrafi zrobić. W załączniku plik bas

      wklejam listing:
      5 REM --- INICJALIZACJA ---
      10 DIM D$(10),U$(10),Q$(1),R$(1),I$(40),M$(40),A$(10):CLOSE #1:OPEN #1,4,0,"K:"
      15 PRINT "CZY WYSWIETLIC INSTRUKCJE (TAK/NIE)?":TRAP 15:INPUT I$
      16 IF I$="NIE" OR I$="nie" THEN GOTO 40
      17 IF I$<>"TAK" AND I$<>"tak" THEN GOTO 15
      18 REM --- INSTRUKCJA (WOLNY SCROLL) ---
      20 GRAPHICS 1:RESTORE 6000
      21 READ M$:IF M$="KONIEC" THEN PRINT "NACISNIJ [RETURN]...":INPUT I$:GOTO 40
      22 PRINT M$:FOR W=1 TO 400:NEXT W:GOTO 21
      40 REM --- RESET STANU I MAPY ---
      41 GRAPHICS 1:POKE 752,1:S=0:F=100:P=100:M=0:R$=">":REM RESET
      42 X=INT(RND(0)*8)+1:Y=INT(RND(0)*14)+3:REM START
      43 BX=INT(RND(0)*8)+11:BY=INT(RND(0)*14)+3:REM CEL X
      44 OS=S:OF=F:OP=P
      45 REM --- GENEROWANIE OBIEKTOW ---
      50 FOR I=1 TO 10:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+2:? #6;"A":NEXT I
      55 FOR I=1 TO 3:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+2:? #6;"B":NEXT I
      60 FOR I=1 TO 3:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+2:? #6;"D":NEXT I
      70 POSITION BX,BY:? #6;"X"
      100 REM --- GLOWNA PETLA: STATUS ---
      110 POSITION 0,0:? #6;"S:";S;" F:";F;" P:";P;" M:";M
      115 IF F<=0 THEN M$="BRAK PALIWA!":GOSUB 5000:GOTO 500
      116 IF P<=0 THEN M$="PANCERZ ZNISZCZONY!":GOSUB 5000:GOTO 500
      140 REM --- MONITOROWANIE ZMIAN ---
      141 IF S<>OS THEN M$="ZAKTUALIZOWANO PUNKTACJE":GOSUB 5000:OS=S
      142 IF F<>OF THEN M$="ZMIANA POZIOMU PALIWA":GOSUB 5000:OF=F
      143 IF P<>OP THEN M$="STAN PANCERZA ZMIENIONY":GOSUB 5000:OP=P
      144 REM --- SKANER ZBLIZENIOWY 'B' (DYSTANS 1-3) ---
      145 FOR O=1 TO 3:TX=X+O:TY=Y:GOSUB 480:IF C=1 THEN POP :GOTO 470
      146 TX=X-O:TY=Y:GOSUB 480:IF C=1 THEN POP :GOTO 470
      147 TX=X:TY=Y+O:GOSUB 480:IF C=1 THEN POP :GOTO 470
      148 TX=X:TY=Y-O:GOSUB 480:IF C=1 THEN POP :GOTO 470
      149 NEXT O
      150 POSITION X,Y:? #6;R$:REM POKAZ RAKIETE
      160 PRINT "----------------------------------------"
      161 PRINT "KIERUNEK (N,S,E,W)? ";:TRAP 161:INPUT D$
      170 IF D$="N" OR D$="n" THEN R$="^":GOTO 200
      172 IF D$="S" OR D$="s" THEN R$="v":GOTO 200
      174 IF D$="E" OR D$="e" THEN R$=">":GOTO 200
      176 IF D$="W" OR D$="w" THEN R$="<":GOTO 200
      178 GOTO 161
      200 REM --- ZADANIE ARYTMETYCZNE ---
      210 A=INT(RND(0)*10)+1:B=INT(RND(0)*10)+1:T=INT(RND(0)*4)
      220 ON T+1 GOTO 230,240,250,260
      230 Q$="+":Z=A+B:GOTO 300
      240 Q$="-":IF A<B THEN K=A:A=B:B=K
      245 Z=A-B:GOTO 300
      250 Q$="*":Z=A*B:GOTO 300
      260 Q$="/":Z=A:A=A*B
      300 PRINT A;Q$;B;"= ";:TRAP 300:INPUT ANS
      310 IF ANS<0 THEN GOTO 300
      320 IF ANS<>Z THEN M$="BLAD! KOLEJNE ZADANIE...":GOSUB 5000:S=S-5:P=P-10:GOTO 100
      400 REM --- RUCH (3 POLA) ---
      410 M$="DOSKONALE!":GOSUB 5000:S=S+5:M=M+1
      420 FOR J=1 TO 3:POSITION X,Y:? #6;" ":SOUND 0,50+J*20,10,8
      430 DX=0:DY=0:IF R$="^" THEN DY=-1
      431 IF R$="v" THEN DY=1
      432 IF R$="<" THEN DX=-1
      433 IF R$=">" THEN DX=1
      440 X=X+DX:Y=Y+DY
      441 IF X<0 THEN X=X+4:M$="ODBICIE!":GOSUB 5000:J=3:GOTO 450
      442 IF X>19 THEN X=X-4:M$="ODBICIE!":GOSUB 5000:J=3:GOTO 450
      443 IF Y<2 THEN Y=Y+4:M$="ODBICIE!":GOSUB 5000:J=3:GOTO 450
      444 IF Y>18 THEN Y=Y-4:M$="ODBICIE!":GOSUB 5000:J=3:GOTO 450
      445 IF X=BX AND Y=BY THEN GOTO 600
      448 LOCATE X,Y,CC:POSITION X,Y:? #6;R$:FOR W=1 TO 40:NEXT W
      449 IF CC=33 OR CC=36 THEN J=3:REM KOLIZJA A LUB D
      450 NEXT J:SOUND 0,0,0,0:GOTO 100
      460 IF CC=33 THEN M$="TRAFIONO W ASTEROIDY!":SOUND 0,40,2,15:GOSUB 5000:P=P-20
      461 GOTO 100
      470 REM --- TELEPORTACJA: SKOK Z PĘTLI ---
      471 POSITION X,Y:? #6;" ":M$="ANOMALIA! SKOK PRZESTRZENNY!":SOUND 0,100,10,15
      472 X=INT(RND(0)*16)+2:Y=INT(RND(0)*14)+3:REM NOWE LOSOWE X,Y
      473 POSITION X,Y:? #6;R$:FOR W=1 TO 10:POKE 712,W*16:NEXT W:POKE 712,0
      474 GOSUB 5000:SOUND 0,0,0,0:GOTO 100
      480 REM --- SUB: SPRAWDZANIE KODU B ---
      481 C=0:IF TX<0 OR TX>19 OR TY<2 OR TY>18 THEN RETURN
      482 LOCATE TX,TY,V:IF (V AND 31)=2 THEN C=1:RETURN:REM DETEKCJA 'B'
      483 RETURN
      500 REM --- GAME OVER ---
      510 SOUND 0,255,2,15:FOR W=1 TO 200:NEXT W:SOUND 0,0,0,0:PRINT "GAME OVER"
      515 GOSUB 5000:PRINT "CZY GRAC OD NOWA (TAK/NIE)?";:INPUT A$
      520 IF A$="TAK" OR A$="tak" THEN GOTO 40
      530 END
      600 REM --- ZWYCIĘSTWO ---
      605 POSITION BX,BY:? #6;R$
      606 FOR W=10 TO 200 STEP 10:SOUND 0,W,10,12:FOR D=1 TO 20:NEXT D:NEXT W
      607 SOUND 0,0,0,0:PRINT "ZWYCIESTWO! CEL OSIAGNIETY!":FOR W=1 TO 800:NEXT W
      610 M$="STATYSTYKI KONCOWE:":GOSUB 5000
      620 PRINT "PUNKTY: ";S:FOR W=1 TO 600:NEXT W
      630 PRINT "PALIWO: ";F:FOR W=1 TO 600:NEXT W
      640 PRINT "PANCERZ: ";P:FOR W=1 TO 600:NEXT W
      650 PRINT "RUCHY: ";M:FOR W=1 TO 800:NEXT W:GOTO 515
      5000 REM --- SUB: WOLNY SCROLL ---
      5010 PRINT M$:FOR W=1 TO 600:NEXT W:RETURN
      6000 DATA "INSTRUKCJA GRY:","S - PUNKTY (SCORE)","F - PALIWO (FUEL)","P - PANCERZ (ARMOR)"
      6010 DATA "M - RUCHY (MOVES)"," ","PRZESZKODY I CELE:","A - ASTEROIDY"
      6020 DATA "B - CZARNA DZIURA (TELEPORT)","D - STREFA ZAGROZENIA"
      6030 DATA "X - BAZA DZIESIATA - CEL RAKIETY","KONIEC"
      • 22: CommentAuthorAtaripuzzle
      • CommentTime8 Apr 2026 08:35 zmieniony
       
      Tu z grafiką:
      AI robi jeszcze sporo błędów. W poniższym źle zlicza ruchy, potrafi zchrzanić dobrze działający program i zrobić poprawki o które ją nie prosiliśmy, ale i tak jest super.

      5 REM --- INICJALIZACJA I RAM ---
      10 DIM D$(10),U$(10),Q$(1),R$(1),I$(40),M$(40),A$(10):CLOSE #1:OPEN #1,4,0,"K:"
      15 GRAPHICS 0:POKE 752,1:? "LADOWANIE GRAFIKI...":RAM=PEEK(106)-8
      20 POKE 106,RAM:CS=RAM*256:FOR I=0 TO 1023:POKE CS+I,PEEK(57344+I):NEXT I
      25 RESTORE 7000:FOR C=1 TO 4:READ CH:OFFSET=CS+CH*8
      26 FOR I=0 TO 7:READ DB:POKE OFFSET+I,DB:NEXT I:NEXT C:REM REDEFINICJA KODOW 2-5
      28 REM --- SEKCJA INSTRUKCJI W PANELU ---
      30 SOUND 0,0,0,0:GRAPHICS 1:POKE 756,RAM:POKE 752,1
      31 PRINT "CZY WYSWIETLIC":PRINT "INSTRUKCJE (TAK/NIE)?"
      32 TRAP 32:INPUT I$:IF I$="NIE" OR I$="nie" THEN GOTO 40
      33 IF I$<>"TAK" AND I$<>"tak" THEN GOTO 30
      34 RESTORE 8000:REM WOLNY SCROLL W PANELU DOLNYM
      35 READ M$:IF M$="KONIEC" THEN FOR W=1 TO 1000:NEXT W:GOTO 30
      36 PRINT M$:FOR W=1 TO 700:NEXT W:GOTO 35
      40 REM --- RESET STANU I PLANSZY ---
      41 S=0:F=100:P=100:M=0:R$=">":SOUND 0,0,0,0:SETCOLOR 4,0,0:SETCOLOR 2,0,2
      42 X=INT(RND(0)*8)+1:Y=INT(RND(0)*14)+3:BX=INT(RND(0)*8)+11:BY=INT(RND(0)*14)+3
      43 OS=S:OF=F:OP=P:GRAPHICS 1:POKE 756,RAM:POKE 752,1
      45 REM --- GENEROWANIE PLANSZY (CHR$ 2, 3, 4, 5) ---
      50 FOR I=1 TO 10:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+3:? #6;CHR$(2):NEXT I
      55 FOR I=1 TO 3:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+3:? #6;CHR$(3):NEXT I
      60 FOR I=1 TO 3:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+3:? #6;CHR$(4):NEXT I
      70 POSITION BX,BY:? #6;CHR$(5)
      100 REM --- GLOWNA PETLA: STATUS ---
      110 POSITION 0,0:? #6;"S:";S;" F:";F;" P:";P;" M:";M
      115 IF F<=0 THEN PRINT "BRAK PALIWA!":GOTO 510
      116 IF P<=0 THEN PRINT "KADLUB ZNISZCZONY!":GOTO 510
      130 POSITION X,Y:? #6;R$
      160 PRINT "KIERUNEK (N,S,E,W)? ";:SOUND 0,0,0,0:TRAP 160:INPUT D$
      170 IF D$="N" OR D$="n" THEN R$="^":GOTO 200
      172 IF D$="S" OR D$="s" THEN R$="v":GOTO 200
      174 IF D$="E" OR D$="e" THEN R$=">":GOTO 200
      176 IF D$="W" OR D$="w" THEN R$="<":GOTO 200
      178 GOTO 160
      200 REM --- ZADANIE ARYTMETYCZNE ---
      210 A=INT(RND(0)*10)+1:B=INT(RND(0)*10)+1:PRINT A;"+";B;"= ";:INPUT ANS
      220 IF ANS<>A+B THEN SOUND 0,20,12,10:PRINT "BLAD! PANCERZ -10":S=S-5:P=P-10:GOTO 100
      400 REM --- RUCH RAKIETY (SKOK O 3 POLA) ---
      410 M=M+1:F=F-10:S=S+5:SOUND 0,100,10,10:PRINT "SILNIKI ODPALONE!"
      420 FOR J=1 TO 3:POSITION X,Y:? #6;" ":SOUND 0,50+J*30,10,8
      430 DX=0:DY=0:IF R$="^" THEN DY=-1
      431 IF R$="v" THEN DY=1
      432 IF R$="<" THEN DX=-1
      433 IF R$=">" THEN DX=1
      440 X=X+DX:Y=Y+DY
      441 IF X<0 THEN X=X+4:PRINT "ODBICIE! P-30":P=P-30:POP :GOTO 100
      442 IF X>19 THEN X=X-4:PRINT "ODBICIE! P-30":P=P-30:POP :GOTO 100
      443 IF Y<3 THEN Y=Y+4:PRINT "ODBICIE! P-30":P=P-30:POP :GOTO 100
      444 IF Y>19 THEN Y=Y-4:PRINT "ODBICIE! P-30":P=P-30:POP :GOTO 100
      445 IF X=BX AND Y=BY THEN POP :GOTO 600
      447 LOCATE X,Y,C:POSITION X,Y:? #6;R$:FOR W=1 TO 40:NEXT W
      448 REM --- KOLIZJE ---
      450 IF C=2 THEN PRINT "ASTEROIDY! P-30":SOUND 0,40,2,15:P=P-30:POP :GOTO 100
      452 IF C=3 THEN PRINT "CZARNA DZIURA! P-30":SOUND 0,40,2,15:P=P-30:POP :GOTO 100
      454 IF C=4 THEN PRINT "ZAGROZENIE! P-30":SOUND 0,40,2,15:P=P-30:POP :GOTO 100
      456 NEXT J:SOUND 0,0,0,0:GOTO 100
      500 REM --- KONIEC I RESTART ---
      510 SOUND 0,0,0,0:PRINT "GAME OVER.":GOTO 520
      520 PRINT "CZY ROZPOCZAC GRE":PRINT "OD NOWA (TAK/NIE)?";
      530 TRAP 530:INPUT A$:IF A$="TAK" OR A$="tak" THEN GOTO 30
      540 END
      600 REM --- UNIKALNY DZWIEK ZWYCIESTWA (3 SEKUNDY) ---
      601 POSITION BX,BY:? #6;R$:SOUND 0,0,0,0
      605 FOR P=1 TO 150:SOUND 0,200-P,10,15:SOUND 1,P,12,10
      606 FOR D=1 TO 35:NEXT D:NEXT P:SOUND 0,0,0,0:SOUND 1,0,0,0
      610 PRINT "CEL OSIAGNIETY!":GOTO 520
      7000 DATA 2,60,126,255,255,255,255,126,60
      7010 DATA 3,24,60,126,219,219,126,60,24
      7020 DATA 4,129,66,36,24,24,36,66,129
      7030 DATA 5,24,24,24,24,60,60,126,255
      8000 DATA "INSTRUKCJA GRY BAZA 10:","CEL: DOTRZYJ DO BAZY"
      8010 DATA "RUCH KOSZTUJE 10 PALIWA","KOLIZJA = -30 PANCERZA"
      8020 DATA "POWODZENIA, PILOCIE!","KONIEC"



      Oznaczenia:
      S: Score - Punkty
      F: Fuel - Paliwo
      P: Pancerz -(Armor)
      M: Moves - Ruchy
      N: North - Północ
      W: West - Zachód
      E: East - Wschód
      S: South - Południe
      • 23:
         
        CommentAuthorDracon
      • CommentTime8 Apr 2026 09:17
       
      Czyli co, nie warto już wracać do samodzielniej nauki Basica, co? :P
      • 24: CommentAuthorAtaripuzzle
      • CommentTime8 Apr 2026 09:35 zmieniony
       
      Myślę, że wiedza z Basica - przydaje się, żeby kontrolować pisany przez AI program i go samemu poprawiać. Ale osoba nie znająca Basica, lub znająca go w małym stopniu, dzięki AI stworzy dla siebie prostą grę jak ta:
      Drobna modyfikacja powyższej gry z rakietą:
      Tym razem chodzimy rycerzem.
      5 REM --- INICJALIZACJA SYSTEMU ---
      10 DIM D$(10),U$(10),Q$(1),R$(1),I$(40),M$(40),A$(10):CLOSE #1:OPEN #1,4,0,"K:"
      15 GRAPHICS 0:POKE 752,1:? "PRZYGOTOWYWANIE MAPY ZAMKU...":RAM=PEEK(106)-8
      20 POKE 106,RAM:CS=RAM*256:FOR I=0 TO 1023:POKE CS+I,PEEK(57344+I):NEXT I
      25 RESTORE 7000:FOR C=1 TO 4:READ CH:OFFSET=CS+CH*8
      26 FOR I=0 TO 7:READ DB:POKE OFFSET+I,DB:NEXT I:NEXT C:REM PODMIANA GRAFIKI 2-5
      28 REM --- SEKCJA INSTRUKCJI W PANELU DOLNYM ---
      30 SOUND 0,0,0,0:GRAPHICS 1:POKE 756,RAM:POKE 752,1
      31 PRINT "CZY WYSWIETLIC":PRINT "ZASADY MISJI (TAK/NIE)?"
      32 TRAP 32:INPUT I$:IF I$="NIE" OR I$="nie" THEN GOTO 40
      33 IF I$<>"TAK" AND I$<>"tak" THEN GOTO 30
      34 RESTORE 8000:REM WOLNY SCROLL W PANELU DOLNYM
      35 READ M$:IF M$="KONIEC" THEN FOR W=1 TO 1000:NEXT W:GOTO 30
      36 PRINT M$:FOR W=1 TO 700:NEXT W:GOTO 35
      40 REM --- RESET PRZYGODY I PLANSZY ---
      41 Z=0:W=100:P=100:K=0:R$=">":SOUND 0,0,0,0:SETCOLOR 4,0,0:SETCOLOR 2,0,2
      42 X=INT(RND(0)*8)+1:Y=INT(RND(0)*14)+3:BX=INT(RND(0)*8)+11:BY=INT(RND(0)*14)+3
      43 GRAPHICS 1:POKE 756,RAM:POKE 752,1
      45 REM --- GENEROWANIE KOMNAT (2:POTWOR, 3:SKARB, 4:KLUCZ, 5:WYJSCIE) ---
      50 FOR I=1 TO 8:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+3:? #6;CHR$(2):NEXT I
      55 FOR I=1 TO 5:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+3:? #6;CHR$(3):NEXT I
      60 POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+3:? #6;CHR$(4)
      70 POSITION BX,BY:? #6;CHR$(5)
      100 REM --- GLOWNA PETLA: STATUS RYCERZA ---
      110 POSITION 0,0:? #6;"Z:";Z;" W:";W;" P:";P;" K:";K
      115 IF W<=0 THEN PRINT "RYCERZ PADL Z WYCZERPANIA!":GOTO 510
      116 IF P<=0 THEN PRINT "PANCERZ ROZBITY!":GOTO 510
      130 POSITION X,Y:? #6;R$
      160 PRINT "KIERUNEK (N,S,E,W)? ";:SOUND 0,0,0,0:TRAP 160:INPUT D$
      170 IF D$="N" OR D$="n" THEN R$="^":GOTO 200
      172 IF D$="S" OR D$="s" THEN R$="v":GOTO 200
      174 IF D$="E" OR D$="e" THEN R$=">":GOTO 200
      176 IF D$="W" OR D$="w" THEN R$="<":GOTO 200
      178 GOTO 160
      200 REM --- POJEDYNEK (ZADANIE MATEMATYCZNE) ---
      210 A=INT(RND(0)*12)+1:B=INT(RND(0)*12)+1:PRINT "WALKA! ";A;"+";B;"= ";:INPUT ANS
      220 IF ANS<>A+B THEN SOUND 0,20,12,10:PRINT "POTWOR CIE ZRANIL!":P=P-15:W=W-5:GOTO 100
      400 REM --- RUCH PRZEZ ZAMEK ---
      410 W=W-5:SOUND 0,100,10,10:PRINT "RYCERZ RUSZA..."
      420 FOR J=1 TO 3:POSITION X,Y:? #6;" ":SOUND 0,100+J*20,10,4
      430 DX=0:DY=0:IF R$="^" THEN DY=-1
      431 IF R$="v" THEN DY=1
      432 IF R$="<" THEN DX=-1
      433 IF R$=">" THEN DX=1
      440 X=X+DX:Y=Y+DY
      441 IF X<0 OR X>19 OR Y<3 OR Y>19 THEN X=X-DX:Y=Y-DY:PRINT "SCIANA!":P=P-5:POP :GOTO 100
      445 IF X=BX AND Y=BY AND K=1 THEN POP :GOTO 600
      446 IF X=BX AND Y=BY AND K=0 THEN PRINT "DRZWI ZAMKNIETE!":X=X-DX:Y=Y-DY:POP :GOTO 100
      447 LOCATE X,Y,C:POSITION X,Y:? #6;R$:FOR W1=1 TO 40:NEXT W1
      448 REM --- KOLIZJE Z OBIEKTAMI ---
      450 IF C=2 THEN PRINT "POTWOR! -20 PANCERZA":SOUND 0,40,2,15:P=P-20:POP :GOTO 100
      452 IF C=3 THEN PRINT "SKARB! +20 ZLOTA":Z=Z+20:POP :GOTO 100
      454 IF C=4 THEN PRINT "ZNALAZLES KLUCZ!":K=1:POP :GOTO 100
      456 NEXT J:SOUND 0,0,0,0:GOTO 100
      500 REM --- KONIEC PRZYGODY ---
      510 SOUND 0,0,0,0:PRINT "KONIEC GRY.":GOTO 520
      520 PRINT "CZY CHCESZ WROCIC":PRINT "DO ZAMKU (TAK/NIE)?";
      530 TRAP 530:INPUT A$:IF A$="TAK" OR A$="tak" THEN GOTO 30
      540 END
      600 REM --- UNIKALNY DZWIEK ZWYCIESTWA (3 SEKUNDY) ---
      601 POSITION BX,BY:? #6;R$:SOUND 0,0,0,0:PRINT "ZAMEK OPUSZCZONY!"
      605 FOR P1=1 TO 150:SOUND 0,200-P1,10,15:SOUND 1,P1,12,10
      606 FOR D1=1 TO 35:NEXT D1:NEXT P1:SOUND 0,0,0,0:SOUND 1,0,0,0:GOTO 520
      7000 DATA 2,60,126,255,219,255,195,126,60
      7010 DATA 3,0,24,60,126,126,60,24,0
      7020 DATA 4,0,28,44,28,8,8,12,0
      7030 DATA 5,255,129,189,189,189,189,129,255
      8000 DATA "MISJA: ZNAJDZ KLUCZ I WYJDZ","ZBIERAJ SKARBY DLA ZLOTA"
      8010 DATA "WALCZ Z POTWORAMI (MATEMATYKA)","UWAZAJ NA WYTRZYMALOSC (W)"
      8020 DATA "POWODZENIA W ZAMKU!","KONIEC"
      • 25: CommentAuthorAtaripuzzle
      • CommentTime8 Apr 2026 13:42 zmieniony
       
      Pewna modyfikacja i mamy grę zręcznościową - gdzie poruszamy się joystikiem i tylko gdy potwór nas złapie pokonujemy go rozwiązując zadanie arytmetyczne:
      5 REM --- INICJALIZACJA I RAM ---
      10 DIM D$(10),U$(10),Q$(1),R$(1),I$(40),M$(40),A$(10):CLOSE #1:OPEN #1,4,0,"K:"
      15 GRAPHICS 0:POKE 752,1:? "PRZYGOTOWYWANIE SYSTEMOW...":RAM=PEEK(106)-8
      20 POKE 106,RAM:CS=RAM*256:FOR I=0 TO 1023:POKE CS+I,PEEK(57344+I):NEXT I
      25 RESTORE 7000:FOR C=1 TO 5:READ CH:OFFSET=CS+CH*8
      26 FOR I=0 TO 7:READ DB:POKE OFFSET+I,DB:NEXT I:NEXT C:REM DANE 2-6
      28 REM --- SEKCJA MENU I INSTRUKCJI ---
      30 SOUND 0,0,0,0:GRAPHICS 1:POKE 756,RAM:POKE 752,1:SETCOLOR 0,12,10
      31 PRINT "CZY WYSWIETLIC":PRINT "ZASADY (TAK/NIE)?"
      32 TRAP 32:INPUT I$:IF I$="NIE" OR I$="nie" THEN GOTO 40
      33 IF I$<>"TAK" AND I$<>"tak" THEN GOTO 30
      34 RESTORE 8000:REM POCZATEK TEKSTU
      35 READ M$:IF M$="KONIEC" THEN FOR W=1 TO 1000:NEXT W:GOTO 30
      36 PRINT M$:FOR W=1 TO 600:NEXT W:GOTO 35
      40 REM --- RESET PRZYGODY (KLUCZ I STATUS) ---
      41 Z=0:W=100:K=0:MX=18:MY=15:SOUND 0,0,0,0:SETCOLOR 4,0,0:SETCOLOR 2,0,2
      42 X=2:Y=5:BX=18:BY=5:GRAPHICS 1:POKE 756,RAM:POKE 752,1:SETCOLOR 0,12,10
      45 REM --- GENEROWANIE PLANSZY (3:POTWOR, 5:BRAMA, 6:SKARB) ---
      50 FOR I=1 TO 5:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+3:? #6;CHR$(3):NEXT I
      55 FOR I=1 TO 4:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+3:? #6;CHR$(6):NEXT I
      60 POSITION BX,BY:? #6;CHR$(5):REM BRAMA ZAWSZE WIDOCZNA
      65 POSITION INT(RND(0)*10)+5,INT(RND(0)*10)+5:? #6;CHR$(4):REM KLUCZ
      100 REM --- GLOWNA PETLA REAL-TIME ---
      110 POSITION 0,0:? #6;"Z:";Z;" W:";W;" K:";K
      115 IF W<=0 THEN PRINT "RYCERZ PADL ZE ZMECZENIA!":GOTO 510
      120 ST=STICK(0):DX=0:DY=0:IF ST=14 THEN DY=-1
      121 IF ST=13 THEN DY=1
      122 IF ST=11 THEN DX=-1
      123 IF ST=7 THEN DX=1
      125 IF DX=0 AND DY=0 THEN GOTO 145
      130 POSITION X,Y:? #6;" ":X=X+DX:Y=Y+DY:W=W-1
      135 IF X<0 OR X>19 OR Y<3 OR Y>19 THEN X=X-DX:Y=Y-DY:GOTO 145
      140 LOCATE X,Y,C:IF C=3 THEN GOSUB 1500:REM WALKA Z MAPY
      141 IF C=4 THEN K=1:Z=Z+50:SOUND 0,50,10,10:PRINT "KLUCZ ZDOBYTY!"
      142 IF C=6 THEN Z=Z+20:SOUND 0,100,10,4:PRINT "SKARB!"
      143 IF X=BX AND Y=BY AND K=1 THEN GOTO 600
      145 POSITION X,Y:? #6;CHR$(2):REM RYCERZ WIDOCZNY ZAWSZE
      300 REM --- POSCIG POTWORA ---
      310 IF RND(0)>0.8 THEN GOTO 400
      320 POSITION MX,MY:? #6;" ":IF X<MX THEN MX=MX-1
      321 IF X>MX THEN MX=MX+1
      322 IF Y<MY THEN MY=MY-1
      323 IF Y>MY THEN MY=MY+1
      330 IF MX=X AND MY=Y THEN GOSUB 1500:REM KONTAKT Z POTWOREM
      340 POSITION MX,MY:? #6;CHR$(3):REM POTWOR WIDOCZNY
      400 FOR DLY=1 TO 30:NEXT DLY:GOTO 100
      500 REM --- KONIEC GRY (PORAZKA) ---
      510 SOUND 0,40,10,15:PRINT "SMIERC RYCERZA.":FOR W=1 TO 200:NEXT W
      515 SOUND 0,0,0,0:GOTO 520
      520 PRINT "CZY ROZPOCZAC GRE":PRINT "OD NOWA (TAK/NIE)?";
      530 TRAP 530:INPUT A$:IF A$="TAK" OR A$="tak" THEN GOTO 30
      540 END
      600 REM --- ZWYCIESTWO (UNI-DZWIEK) ---
      601 POSITION BX,BY:? #6;CHR$(2):PRINT "ZAMEK POKONANY!"
      605 FOR P1=1 TO 150:SOUND 0,200-P1,10,15:SOUND 1,P1,12,10
      606 FOR D1=1 TO 35:NEXT D1:NEXT P1:SOUND 0,0,0,0:SOUND 1,0,0,0:GOTO 520
      1500 REM --- WALKA (ZADANIE) ---
      1505 SOUND 0,0,0,0:A=INT(RND(0)*10)+5:B=INT(RND(0)*10)+5
      1510 PRINT "POTWOR! ";A;"+";B;"= ";:INPUT ANS
      1520 IF ANS<>A+B THEN PRINT "ZGINALES W WALCE!":POP :GOTO 510
      1530 PRINT "POTWOR POKONANY!":Z=Z+100:POSITION MX,MY:? #6;" "
      1535 MX=INT(RND(0)*18)+1:MY=INT(RND(0)*14)+3:RETURN
      7000 DATA 2,24,60,60,126,255,255,126,60
      7010 DATA 3,60,126,219,255,195,126,126,60
      7020 DATA 4,0,28,44,28,8,8,12,0
      7030 DATA 5,255,129,189,189,189,189,129,255
      7040 DATA 6,0,24,60,126,126,60,24,0
      8000 DATA "RT CASTLE: STERUJ JOYEM","POTWOR CIE GONI!","ZNAJDZ KLUCZ I WYJDZ"
      8010 DATA "ZLY WYNIK = SMIERC","RYCERZ WIDOCZNY ZAWSZE","KONIEC"


      • 26: CommentAuthorAtaripuzzle
      • CommentTime8 Apr 2026 18:21 zmieniony
       
      Można tą zręcznościową wersję rozbudować o 10 poziomów.
      Od 1-5 lvl Potwór przyspiesza, w 5 ma możliwość strzału, w 6 lub 10 lvl my strzelamy do potwora. Jeżeli zestrzelimy go zanim ucieknie wygrywamy grę. Pliki bas w załączniku.

      Oto kod - jak zawsze zbugowany:
      1 DIM I$(40),M$(40),A$(10):GRAPHICS 0:POKE 752,1:POSITION 12,10:? "LADOWANIE GRY...":FOR D=1 TO 500:NEXT D
      2 ? CHR$(125):TRAP 2:POSITION 5,10:? "CZY WYSWIETLIC INSTRUKCJE (T/N)?":INPUT A$
      3 IF LEN(A$)>0 THEN IF A$(1,1)="T" OR A$(1,1)="t" THEN GOSUB 9000
      4 TRAP 40000:REM --- INICJALIZACJA ---
      10 CLOSE #1:OPEN #1,4,0,"K:"
      15 RAM=PEEK(106)-8:POKE 106,RAM:CS=RAM*256:FOR I=0 TO 1023:POKE CS+I,PEEK(57344+I):NEXT I
      25 RESTORE 7000:FOR C=1 TO 7:READ CH:OFFSET=CS+CH*8:FOR I=0 TO 7:READ DB:POKE OFFSET+I,DB:NEXT I:NEXT C
      30 L=1:Z=0:GOTO 40
      35 L=L+1:IF L>10 THEN GOTO 700
      40 REM --- RESET KOMNATY ---
      41 W=100:K=0:MX=18:MY=15:GOSUB 971:SETCOLOR 4,0,0:SETCOLOR 2,0,2:MSF=0
      42 X=2:Y=5:BX=18:BY=5:GRAPHICS 1:POKE 756,RAM:POKE 752,1:SETCOLOR 0,12,10
      43 P=0.5+(L-1)*0.125:IF P>1 THEN P=1
      50 POSITION BX,BY:? #6;CHR$(5):POSITION INT(RND(0)*10)+5,INT(RND(0)*10)+5:? #6;CHR$(4)
      55 IF L=6 OR L=10 THEN MX=10:MY=10:GOTO 100
      60 FOR I=1 TO 4:POSITION INT(RND(0)*18)+1,INT(RND(0)*14)+3:? #6;CHR$(6):NEXT I
      100 REM --- GLOWNA PETLA GRY ---
      110 POSITION 0,0:? #6;"L:";L;" Z:";Z;" W:";W:POKE 53278,0
      115 IF W<=0 THEN PRINT "ZMECZENIE!":GOTO 510
      120 ST=STICK(0):TR=STRIG(0):DX=0:DY=0
      121 IF ST=14 THEN DY=-1:LDX=0:LDY=-1
      122 IF ST=13 THEN DY=1:LDX=0:LDY=1
      123 IF ST=11 THEN DX=-1:LDX=-1:LDY=0
      124 IF ST=7 THEN DX=1:LDX=1:LDY=0
      125 IF DX=0 AND DY=0 THEN GOTO 145
      130 POSITION X,Y:? #6;" ":X=X+DX:Y=Y+DY:W=W-1
      135 IF X<0 OR X>19 OR Y<3 OR Y>19 THEN X=X-DX:Y=Y-DY:GOTO 145
      140 LOCATE X,Y,C:IF C=3 AND L<>6 AND L<>10 THEN GOSUB 1500
      141 IF C=4 THEN K=1:Z=Z+50:SOUND 0,50,10,10:FOR D=1 TO 20:NEXT D:GOSUB 971:PRINT "KLUCZ!"
      142 IF C=6 THEN Z=Z+20:SOUND 0,100,10,4:FOR D=1 TO 15:NEXT D:GOSUB 971
      143 IF X=BX AND Y=BY AND K=1 THEN GOSUB 1005:GOTO 35
      145 POSITION X,Y:? #6;CHR$(2):REM RYCERZ ZAWSZE WIDOCZNY
      148 IF (L=6 OR L=10) AND TR=0 THEN GOTO 400
      149 IF (L=5 OR L=9) AND MSF=0 THEN GOSUB 2000
      300 REM --- LOGIKA POTWORA ---
      310 IF L<>6 AND L<>10 AND RND(0)>P THEN GOTO 345
      320 POSITION MX,MY:? #6;" ":IF L=6 OR L=10 THEN GOTO 350
      321 IF X<MX THEN MX=MX-1
      322 IF X>MX THEN MX=MX+1
      323 IF Y<MY THEN MY=MY-1
      324 IF Y>MY THEN MY=MY+1
      330 IF MX=X AND MY=Y THEN GOSUB 1500
      340 POSITION MX,MY:? #6;CHR$(3):REM POTWOR ZAWSZE WIDOCZNY
      345 FOR D=1 TO 20:NEXT D:GOTO 100
      350 REM --- UCIECZKA ---
      352 IF RND(0)>0.33 THEN GOTO 340
      355 MX=MX+(MX>X)-(MX<X):MY=MY+(MY>Y)-(MY<Y)
      360 IF MX<0 OR MX>19 OR MY<3 OR MY>19 THEN GOTO 370
      365 GOTO 340
      370 IF L=6 THEN PRINT "UCIEKL! POZIOM 7...":GOSUB 1000:GOTO 35
      372 IF L=10 THEN PRINT "UCIEKL! PRZEGRANA!":GOTO 510
      400 REM --- MECHANIKA WIDOCZNEGO STRZALU ---
      405 SX=X:SY=Y:SOUND 0,150,10,8:REM START STRZALU
      410 POSITION SX,SY:? #6;" ":SX=SX+LDX:SY=SY+LDY:REM KROK PO KROKU DLA WIDOCZNOSCI
      412 IF SX<0 OR SX>19 OR SY<3 OR SY>19 THEN GOSUB 971:GOTO 100
      415 LOCATE SX,SY,TC:IF TC=3 THEN GOSUB 971:GOTO 600:REM TRAFIONY!
      420 POSITION SX,SY:? #6;CHR$(7):REM POKAZ POCISK
      422 POSITION X,Y:? #6;CHR$(2):POSITION MX,MY:? #6;CHR$(3):REM REDRAW POSTACI
      425 FOR D=1 TO 15:NEXT D:GOTO 410
      500 REM --- PORAZKA ---
      510 GOSUB 971:SOUND 0,40,10,15:FOR D=1 TO 100:NEXT D:GOSUB 971:PRINT "KONIEC."
      515 GOTO 950:REM PYTANIE O RESTART
      600 REM --- TRAFIENIE POTVORA (ZNIKA) ---
      605 POSITION MX,MY:? #6;" ":REM POTWOR ZNIKA
      610 IF L=6 OR L=10 THEN GOSUB 650:GOTO 700:REM WYGRANA GRY
      615 PRINT "TRAFIONY!":Z=Z+500:GOSUB 650:GOSUB 1000:GOTO 35
      650 REM --- UNIKALNY DZWIEK (3 SEKUNDY) ---
      655 FOR P1=1 TO 150:SOUND 0,P1,10,15:SOUND 1,255-P1,8,10:NEXT P1
      660 GOSUB 971:RETURN
      700 REM --- EKRAN WYGRANEJ ---
      705 GRAPHICS 1:POSITION 2,5:? #6;"ZWYCIESTWO FINALNE!"
      710 GOSUB 650:REM DZWIEK 3S I WYCISZENIE
      950 REM --- PYTANIE O RESTART ---
      955 ? CHR$(125):TRAP 955:POSITION 2,10:? "ZACZAC OD NOWA (T/N)?":INPUT A$
      960 IF LEN(A$)>0 THEN IF A$(1,1)="T" OR A$(1,1)="t" THEN RUN
      970 END
      971 FOR I=0 TO 3:SOUND I,0,0,0:NEXT I:RETURN
      1000 FOR D=1 TO 500:NEXT D:RETURN
      1005 FOR I=250 TO 50 STEP -10:SOUND 0,I,10,10:NEXT I:GOSUB 971:RETURN
      1500 GOSUB 971:A=INT(RND(0)*10)+L:B=INT(RND(0)*10)+L
      1510 TRAP 1510:PRINT "WALKA! ";A;"+";B;"=";:INPUT ANS
      1515 TRAP 40000:IF ANS<>A+B THEN PRINT "POLEGLES!":POP :GOTO 510
      1530 PRINT "ZWYCIESTWO!":Z=Z+100:MX=1:MY=1:RETURN
      2000 MSX=MX:MSY=MY:MSF=1:SOUND 1,200,10,4:POSITION MSX,MSY:? #6;" "
      2010 MSX=MSX+(X>MSX)-(X<MSX):MSY=MSY+(Y>MSY)-(Y<MSY)
      2015 IF MSX=X AND MSY=Y THEN PRINT "TRAFIONY STRZALEM!":GOTO 510
      2020 IF MSX<0 OR MSX>19 OR MSY<3 OR MSY>19 THEN SOUND 1,0,0,0:RETURN
      2025 POSITION MSX,MY:? #6;CHR$(8):RETURN
      7000 DATA 2,24,60,60,126,255,255,126,60
      7010 DATA 3,60,126,219,255,195,126,126,60
      7020 DATA 4,0,28,44,28,8,8,12,0
      7030 DATA 5,255,129,189,189,189,189,129,255
      7040 DATA 6,0,24,60,126,126,60,24,0
      7050 DATA 7,0,0,24,24,24,24,0,0
      7060 DATA 8,0,0,102,60,60,102,0,0
      9000 REM --- INSTRUKCJA ---
      9010 GRAPHICS 0:? "ZASADY GRY CASTLE QUEST:":?
      9020 ? "- MASZ 10 KOMNAT DO POKONANIA."
      9030 ? "- ZBIERZ KLUCZ, ABY OTWORZYC BRAME."
      9040 ? "- LVL 1-5: POTWOR PRZYSPIESZA."
      9050 ? "- LVL 5 & 9: POTWOR STRZELA DO CIEBIE!"
      9060 ? "- LVL 6 & 10: POLOWANIE! ZESTRZEL GO"
      9070 ? " PRZYCISKIEM FIRE (WIDOCZNY STRZAL)."
      9080 ? "- JEZELI UCIEKNIE W LVL 10 - PRZEGRASZ."
      9090 ? "- POTWOR ZNIKA TYLKO PO TRAFIENIU."
      9100 ? :? "NACISNIJ RETURN...":INPUT A$:GOSUB 971:RETURN

      • 27: CommentAuthorAtaripuzzle
      • CommentTime12 Apr 2026 05:46 zmieniony
       
      Dodaje w załącznikach wersje Castle "Middle English", "English", "Włoski" (quiz wyboru). Nie ja wybierałem słowa - więc niektóre mogą być niepoprawne. AI wybierała także pytania i odpowiedzi w quizie.
      Jak zwykle program ma licznik pancerza (P), w górnym panelu, zbugowany.
      Staram się jednak działających programów nie poprawiać przez AI, ponieważ przy poprawianiu często on knoci cały program, chociaż przy tym śmieszne bugi powstają jak w pliku castlehe.bas
      Wstawiłem w tym wątku ciekawe warianty tego samego programu, często AI samo podejmowało decyzje o przeróbkach nie pytając promptera.
      • 28: CommentAuthorAtaripuzzle
      • CommentTime12 Apr 2026 08:40 zmieniony
       
      Jako podsumowanie wypuszczam składankę atr (załącznik) wariantów gry "castle" jakie wypuściła AI (pliki bas z poprzednich postów). Uruchamiać w Atari 400 mini, w Atari XL/XE z sio2sd, sdrivemicro, lub w emulatorze Atari Altirra, bo na kartridżu A8picocart nie wyświetla grafiki.

      Grało się bardzo przyjemnie w te warianty. Ostatni był tak zrobiony, że zliczał odpowiedzi
      poprawne. Poziomy (Levele) przyrastały dopóki się pula pytań nie wyczerpała (20 pytań).

      Ruch następuje o 3 pola. Ciekawy jest tu element logiczny gry - strategiczny, którą drogę wybrać. Spotkanie potwora zmniejsza kroki, odbicie od ściany zwiększa o 1. A trzeba wykombinować jak wziąć klucz i dotrzeć do drzwi (prostokąt). Samo przechodzenie przez drzwi jest bombowe - bardzo ciekawy efekt dźwiękowy. Niestety nie udało mi się żadnego wariantu ukończyć, ale byłem blisko końca.

      Grałem kiedyś na atari w podobną grę; rewelacyjnie zrobione quizy "Civilization" - part 1: Birth of Civilization (Mesopotamia, Egypt, India, China); part 2: Greek World (+Persia); part 3: Etruskowie, Kartagina , Rzym. Tam efekty dźwiękowe były podobne, i bardzo ciekawe. Od razu czuć które pytania były robione przez człowieka, a które przez AI.
      • 29: CommentAuthorAtaripuzzle
      • CommentTime14 Apr 2026 16:55 (7 dni temu) zmieniony
       
      remake gry z Atari w Pythonie w załączniku - listing (w Pythonie ze standardową biblioteką tkinter). aby działało trzeba zainstalować Pythona z oficjalnej strony ->link<- (zahaczyć przy instalacji "Add to Path" i zahaczyć tk/... Idle - tkinter) i zamienić rozszerzenie txt na py:


      P.S. Pytania i odpowiedzi przygotowywała AI i zauważyłem, że niektóre biblijne są niepoprawne.

      Grywalność tej gry nie ustępuje komercyjnym wytworom. Grało się świetnie, ale wersja Pythonowa przy tej Atarowej jest dość mizerna dźwiękowo.
      • 30: CommentAuthorastrofor
      • CommentTime14 Apr 2026 21:38 (7 dni temu)
       
      A czemu historia Mezopotami a nie archeologia wczesnego paleolitu ?
      • 31: CommentAuthorAtaripuzzle
      • CommentTime14 Apr 2026 22:35 (7 dni temu) zmieniony
       
      Astrofor Z archeologii pytań jest niewiele, ale dotyczą one także Międzyrzecza Eufrat Tygrys (Mezopotamii), poza tym większość pytań jest historycznych; nie archeologicznych, dlatego tak nazwałem. Pytania i odpowiedzi układało mi AI więc mogły się zakraść jakieś bzdury. Nie wiem co AI miało na myśli podając liczby np. 4000. Nie wiadomo czy chodzi o 4000 metrów? 4000 mieszkańców, ale nie poprawiam - bo musiałbym sprawdzać źródła.
      • 32: CommentAuthorLt_Bri
      • CommentTime14 Apr 2026 23:49 (7 dni temu)
       
      -->Ataripuzzle, jak się za gówniarza człowiek przygotowywał do zajęć - albo co gorsza zaliczenia - u dra Karczewskiego, to troszku inne miał odczucia co do ilości możliwych pytań ;)
      • 33: CommentAuthorAtaripuzzle
      • CommentTime15 Apr 2026 00:43 (6 dni temu) zmieniony
       
      LT_Bri. Program -gra jest przystosowana do pytań o słówka (językowe). Opcje odpowiedzi przez to wypadają idiotycznie (dwie są losowane a jedna jest poprawna). Takie pytania jakie przygotowało AI wydają się słabo edukacyjne.