Problem z powtarzaniem pytań

Problem z powtarzaniem pytań
R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

Mam problem z powtarzaniem pytań z moim programie. Chce, aby zadanie pytanie na które odpowiedziałem nie mogło się już więcej powtórzyć. Taki kod wyrzuca niestety błędy:
First compilation of d:\programy\free pascal\bin\i386-win32\sudoku.pas
SUDOKU.PAS(72,1) Fatal: Syntax error, ";" expected but "identifier ZESTAWY" found
SUDOKU.PAS(0) Fatal: Compilation aborted

Kopiuj
 program Quiz;
Uses Crt;

Type TZestaw = record
                 Pytanie   : string;
                 Odpowiedz : array [1..3] of string;
                 Dobra     : Integer;
                 Bylo : Boolean;
               end;

Const Zestawy : array [1..10] of TZestaw = ((Pytanie:'Oficjalne maskotki, będace symbolami Euro 2012, to:'; 

Odpowiedz: ('Siemko i Strimko','Slavek i Slavko','Klemek i Ladko');Dobra:2),

(Pytanie:'W ilu polskich miastach odbeda sie rozgrywki podczas Euro 2012?'; Odpowiedz: ('3','6','4');Dobra:3),

(Pytanie:'Mecz otwarcia bedzie rozegrany na stadionie:'; Odpowiedz: ('w Gdansku','w Kijowie','w 

Warszawie');Dobra:3),

(Pytanie:'Oficjalne rozpoczecie UEFA EURO 2012 na Stadionie Narodowym w Warszawie, bedzie mialo miejsce:'; 

Odpowiedz: ('1 czerwca 2012','8 czerwca 2012','3 czerwca 2012');Dobra:2),

(Pytanie:'W ktorym z polskich miast, nie bedzie rozgrywek w czasie trwania Euro 2012?'; Odpowiedz: ('w Krakowie','w 

Gdansku','w Warszawie');Dobra:1),

(Pytanie:'Stadion w Gdansku nosi nazwe:'; Odpowiedz: ('Allianz Arena','PGE Arena','PZU Arena');Dobra:2),

(Pytanie:'Przygotowania do Euro 2012 w Polsce, sa koordynowane przez:'; Odpowiedz: ('Spolke PL.2012','Spolke 

Euro.2012','Spolke Euro2012.PL');Dobra:1),

(Pytanie:'Ktorym z kolei finalem Mistrzostw Europy organizowanym przez dwa kraje, bedzie Euro 2012?'; Odpowiedz: 

('2','4','3');Dobra:3),

(Pytanie:'Mecz finalowy zostanie rozegrany na stadionie:'; Odpowiedz: ('w Warszawie','w Kijowie','w 

Lwowie');Dobra:2),

(Pytanie:'Mecz finalowy podczas Euro 2012 bedzie rozegrany'; Odpowiedz: ('30 czerwca 2012 roku','2 lipca 2012 

roku','1 lipca 2012 roku');Dobra:3));

VAR suma, i : Integer;

procedure PokazZestaw(NrZestawu : Integer);
 
  var Odp, i : Integer;
 
  begin
 
 
    ClrScr;
 
    Writeln('Pytanie ',NrZestawu,'  : ',Zestawy[NrZestawu].Pytanie);
 
    Writeln;
 
    for i:=1 to 3 do
 
      Writeln('Odpowiedz ', i,': ',Zestawy[NrZestawu].Odpowiedz[ i]);
 
    Writeln;
 
    Write('Twoj wybor : ');
 
    Readln(Odp);

if Odp=Zestawy[NrZestawu].Dobra then
begin
  suma:=suma+1;
  TextColor(Green);
  Writeln('Brawo! To prawidlowa odpowiedz.');
  TextColor(White);
end
else
begin
  TextColor(Red);
  Writeln('Niestety! Jest to zla odpowiedz.');
  TextColor(White);
end;
 
ReadKey
 
Zestawy[NrZestawu].Bylo := True;
 
end;


begin
clrscr;
writeln('Nacisnij dowolny klawisz by rozpoczac test z wiedzy o Euro 2012...');
ReadKey;

for i:=1 to 10 do
    Repeat
      tmp := random(10)+1
      If Zestawy[tmp].Bylo = false Then PokazZestaw(tmp);
    Until Zestawy[tmp].Bylo = false;

clrscr;
        writeln('Koniec testu!');
        writeln('Zdobyto ', suma,' na 10 pkt mozliwych.');
readln;
End.
edytowany 1x, ostatnio: olesio
Riddle
Dobrym nawykiem jest indeksowanie tablic od zera.
R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

OK, jedno to już wiem ... zapomniałem dodać tmp w zmiennych. Ale co z resztą? Bo nadal niestety nie działa ...

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12167
0

Przy deklaracji stałej rekordowej macierzy można się łatwo pogubić i Ty to zrobiłeś;

Jeżeli wypełniasz taką macierz to najpierw wpisz indentyfikatory pól rekordu, a później je wypełniaj; W każdym polu macierzy zapomniałeś o polu Bylo: Boolean; w rekordzie;

Najpierw trzeba było sobie przygotować szkielet:

Kopiuj
const Zestawy : array [1 .. 10] of TZestaw = ((Pytanie: '';
                                               Odpowiedz: ('', '', '');
                                               Dobra: ;
                                               Bylo: ),
                                               Pytanie: '';
                                               Odpowiedz: ('', '', '');
                                               Dobra: ;
                                               Bylo: ),
                                               Pytanie: '';
                                               Odpowiedz: ('', '', '');
                                               Dobra: ;
                                               Bylo: ),
                                               {...}

a po przygotowaniu właściwej ilość dopiero zabrać się za ich wypełnianie;


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

Czyli powinno to wyglądać w taki sposób jak poniżej?

Kopiuj
Const Zestawy : array [1..10] of TZestaw = ((Pytanie:'Oficjalne maskotki, będace symbolami Euro 2012, to:'; 
 
Odpowiedz: ('Siemko i Strimko','Slavek i Slavko','Klemek i Ladko');Dobra:2;Bylo:false),
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 godziny
0

ty patrz w której linijce nie działa.

Kopiuj
ReadKey
 
Zestawy[NrZestawu].Bylo := True;

Brakuje średnika.

Kopiuj
'w Lwowie'

we Lwowie.

R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

Dobra, panowie po wprowadzeniu ów poprawek działa ... Niestety po 10 pytaniach program się zacina i nic się nie da zrobić. Co poprawić, aby to działało?

Azarien
"owych poprawek" :-)
babubabu
  • Rejestracja:około 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Łódź
  • Postów:648
0

Czyli tak jak pisałem

spróbuj dopisać Until (Zestawy[tmp].Bylo = false) or (i = 10);

i OWYCH poprawek. ów się również odmienia.

edytowany 1x, ostatnio: babubabu
R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

Niestety nic to nie dało ... Nadal to samo.

babubabu
  • Rejestracja:około 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Łódź
  • Postów:648
0

A w którym miejscu się zacina? Na pętli repeat until czy gdzie?

R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

No odpowiadam na 10 pytań, które mam w tablicy ... Wskakuje mi komunikat że odpowiedziałem poprawie lub nie i program się zacina.

babubabu
  • Rejestracja:około 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Łódź
  • Postów:648
0

Mi chodzi o DOKŁADNE miejsce czyli w której linijce... Podpowiedź Run -> Step over

R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

If Zestawy[tmp].Bylo=false Then PokazZestaw(tmp);

wskazuje na ta linijkę ...

edytowany 3x, ostatnio: Randall3
babubabu
  • Rejestracja:około 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Łódź
  • Postów:648
0

ech musisz wymyśleć dodatkowy warunek przerwania pętli or (i = 10) powinno działać. A jak nie działa to daj cały kod. Skopiuje sobie i ogarnę.

R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0
Kopiuj
program Quiz;
Uses Crt;

Type TZestaw = record
                 Pytanie   : string;
                 Odpowiedz : array [1..3] of string;
                 Dobra     : Integer;
                 Bylo : Boolean;
                 tmp  : Integer;
               end;

Const Zestawy : array [1..10] of TZestaw = ((Pytanie:'Oficjalne maskotki, będace symbolami Euro 2012, to:'; 

Odpowiedz: ('Siemko i Strimko','Slavek i Slavko','Klemek i Ladko');Dobra:2;Bylo:false),

(Pytanie:'W ilu polskich miastach odbeda sie rozgrywki podczas Euro 2012?'; Odpowiedz: ('3','6','4');Dobra:3),

(Pytanie:'Mecz otwarcia bedzie rozegrany na stadionie:'; Odpowiedz: ('w Gdansku','w Kijowie','w 

Warszawie');Dobra:3;Bylo:false),

(Pytanie:'Oficjalne rozpoczecie UEFA EURO 2012 na Stadionie Narodowym w Warszawie, bedzie mialo miejsce:'; 

Odpowiedz: ('1 czerwca 2012','8 czerwca 2012','3 czerwca 2012');Dobra:2;Bylo:false),

(Pytanie:'W ktorym z polskich miast, nie bedzie rozgrywek w czasie trwania Euro 2012?'; Odpowiedz: ('w Krakowie','w 

Gdansku','w Warszawie');Dobra:1;Bylo:false),

(Pytanie:'Stadion w Gdansku nosi nazwe:'; Odpowiedz: ('Allianz Arena','PGE Arena','PZU Arena');Dobra:2;Bylo:false),

(Pytanie:'Przygotowania do Euro 2012 w Polsce, sa koordynowane przez:'; Odpowiedz: ('Spolke PL.2012','Spolke 

Euro.2012','Spolke Euro2012.PL');Dobra:1;Bylo:false),

(Pytanie:'Ktorym z kolei finalem Mistrzostw Europy organizowanym przez dwa kraje, bedzie Euro 2012?'; Odpowiedz: 

('2','4','3');Dobra:3;Bylo:false),

(Pytanie:'Mecz finalowy zostanie rozegrany na stadionie:'; Odpowiedz: ('w Warszawie','w Kijowie','w 

Lwowie');Dobra:2;Bylo:false),

(Pytanie:'Mecz finalowy podczas Euro 2012 bedzie rozegrany'; Odpowiedz: ('30 czerwca 2012 roku','2 lipca 2012 

roku','1 lipca 2012 roku');Dobra:3;Bylo:false));

VAR suma, i, tmp : Integer;

procedure PokazZestaw(NrZestawu : Integer);
 
  var Odp, i : Integer;
 
  begin
 
 
    ClrScr;
 
    Writeln('Pytanie ',NrZestawu,'  : ',Zestawy[NrZestawu].Pytanie);
 
    Writeln;
 
    for i:=1 to 3 do
 
      Writeln('Odpowiedz ', i,': ',Zestawy[NrZestawu].Odpowiedz[ i]);
 
    Writeln;
 
    Write('Twoj wybor : ');
 
    Readln(Odp);

if Odp=Zestawy[NrZestawu].Dobra then
begin
  suma:=suma+1;
  TextColor(Green);
  Writeln('Brawo! To prawidlowa odpowiedz.');
  TextColor(White);
end
else
begin
  TextColor(Red);
  Writeln('Niestety! Jest to zla odpowiedz.');
  TextColor(White);
end;
 
ReadKey;
 
Zestawy[NrZestawu].Bylo := True;
 
end;


begin
clrscr;
writeln('Nacisnij dowolny klawisz by rozpoczac test z wiedzy o Euro 2012...');
ReadKey;

for i:=1 to 10 do
    Repeat
      tmp := random(10)+1;
      If Zestawy[tmp].Bylo = false Then PokazZestaw(tmp);
    Until (Zestawy[tmp].Bylo = false) or (i=10);

clrscr;
        writeln('Koniec testu!');
        writeln('Zdobyto ', suma,' na 10 pkt mozliwych.');
readln;
End.
edytowany 1x, ostatnio: Randall3
babubabu
  • Rejestracja:około 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Łódź
  • Postów:648
1

Zamiast

Kopiuj
 for i:=1 to 10 do
    Repeat
      tmp := random(10)+1;
      If Zestawy[tmp].Bylo = false Then PokazZestaw(tmp);
    Until (Zestawy[tmp].Bylo = false) or (i=10);

Wstaw

Kopiuj
 i := 0;
    Repeat
      i := i + 1;
      tmp := random(10)+1;
      If Zestawy[tmp].Bylo = false Then PokazZestaw(tmp);
    Until (Zestawy[tmp].Bylo = false) or (i=10);

I zatrybi. Nie zapomnij o ptaszku ;)

edytowany 1x, ostatnio: babubabu
R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

No teraz działa, ale nie do końca jak było w zamiarze ... Problem tkwi w tym, że obecnie program nie zadaje 10, a zaledwie 5 pytań ...

SI
  • Rejestracja:prawie 15 lat
  • Ostatnio:prawie 11 lat
  • Postów:184
2

A ja bym dał taką pętlę:

Kopiuj
for i:= 1 to 10 do begin
  repeat
    tmp:= Random(10) + 1;
  until not Zestawy[tmp].Bylo;
  PokazZestaw(tmp);
end;
babubabu
O właśnie. Ale jak człowiek po robocie zmęczony wraca i jeszcze mysli nad programowaniem to potem pisze takie cuda jak ja :P
R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

OK, dzięki wielkie działa :) A powiedzcie mi jeszcze jedną rzecz. Czy moglibyście zaznaczyć konkretnie które rzeczy muszę zmienić w poniższym programie, aby zmienić ilość pytań na które ktoś ma odpowiedzieć i w którym miejscu zwiększyć tablice pytań, by wszystko działało. Program ten dostałem od znajomego i próbuje pozmieniać, ale wyskakują mi jakieś dziwne błędy ...

Kopiuj
program quiz;
Uses Crt;

Var
  z         : Char;
  Pkt,i,r,w : Byte;
  Imie,x    : String;
  Repeats   : Array[1..10]of Boolean;

Const
  P : Array[1..11]of String =
  ('Oficjalne maskotki, bedace symbolami Euro 2012, to:',
   'W jakim miescie zostal wybrany gospodarz Euro 2012?',
   'W ilu polskich miastach odbeda sie rozgrywki podczas Euro?',
   'Mecz otwarcia bedzie rozegrany na stadionie:',
   'Data rozpoczecia Euro 2012 to:',
   'W ktorym z miast nie bedzie rozgrywek Euro 2012?',
   'Stadion w Gdansku nosi nazwe:',
   'Przygotowania do Euro 2012 w Polsce, sa koordynowane przez:',
   'Euro 2012 to ... z kolei Euro organizowane przez dwa kraje',
   'Mecz finalowy zostanie rozegrany na stadionie?',
   'Mecz finalowy podczas Euro 2012 bedzie rozegrany:');

  A   : Array[1..11]of String =
  ('Siemko i Strimko','w Cardiff','5','w Kijowie',
   '1 czerwca 2012','w Wroclawiu','Allianz Arena','Spolke Euro.2012',
   '6','w Warszawie','30 czerwca 2012');
  B   : Array[1..11]of String =
  ('Slavek i Slavko','w Kijowie','4','w Poznaniu',
   '8 czerwca 2012','w Gdansku','PGE Arena','Spolke Euro2012.PL',
   '4','w Kijowie','2 lipca 2012 roku');
  C   : Array[1..11]of String =
  ('Klemek i Ladko','w Madrycie','2','w Warszawie',
   '3 czerwca 2012','w Krakowie','PZU Arena','Spolke PL.2012',
   '3','we Wroclawiu','1 lipca 2012 roku');
  Odp : Array[1..11]of Byte = (2,1,2,3,2,3,2,3,3,2,3);

Procedure Wygrana;
Begin
  ClrScr;
  Gotoxy(35,1);
  Write('GRATULACJE');
  Gotoxy(20,2);
  Write('Jestes dobrze przygotowany do Euro 2012!');
End;

Procedure Przegrana;
Begin
  ClrScr;
  Gotoxy(35,1);
  Write('PRZYKRO MI');
  Gotoxy(12,2);
  Write('Do Euro jeszcze troche czasu wiec zdazysz sie przygotowac!');
End;

Procedure DobraOdp;
Begin
  Inc(Pkt);
  TextBackground(2);
  Case w of
    1 : Begin Gotoxy(06,6); Write('A:',A[r]); End;
    2 : Begin Gotoxy(31,6); Write('B:',B[r]); End;
    3 : Begin Gotoxy(56,6); Write('C:',C[r]); End;
  End;
  Gotoxy(23,11); Write('0000   000  0000  0000  00000 00000');
  Gotoxy(23,12); Write('0   0 0   0 0   0 0   0    0  0    ');
  Gotoxy(23,13); Write('0   0 0   0 0000  0000    0   0000 ');
  Gotoxy(23,14); Write('0   0 0   0 0   0 0   0  0    0    ');
  Gotoxy(23,15); Write('0000   000  0000  0   0 00000 00000');
  Delay(1000);
  Window(1,18,80,24);
  TextBackground(0);
  ClrScr;
  Window(1,8,80,25);
End;

Procedure ZlaOdp;
Begin
  TextBackground(4);
  Case w of
    1 : Begin Gotoxy(06,6); Write('A:',A[r]); End;
    2 : Begin Gotoxy(31,6); Write('B:',B[r]); End;
    3 : Begin Gotoxy(56,6); Write('C:',C[r]); End;
  End;
  Gotoxy(33,09); Write('  00             ');
  Gotoxy(33,10); Write('                 ');
  Gotoxy(33,11); Write('00000 0     00000');
  Gotoxy(33,12); Write('   0  0     0    ');
  Gotoxy(33,13); Write('  0   0     0000 ');
  Gotoxy(33,14); Write(' 0    0     0    ');
  Gotoxy(33,15); Write('00000 00000 00000');
  Delay(1000);
  Window(1,18,80,24);
  TextBackground(0);
  ClrScr;
  Window(1,8,80,25);
  Przegrana;
End;


Begin
  ClrScr;
  Randomize;
  Gotoxy(29,2); Write('00000 0   0 0000   000');
  Gotoxy(29,3); Write('0     0   0 0   0 0   0');
  Gotoxy(29,4); Write('0000  0   0 0000  0   0');
  Gotoxy(29,5); Write('0     0   0 0   0 0   0');
  Gotoxy(29,6); Write('00000  000  0   0  000');
  Window(1,8,80,25);
  Gotoxy(26,1); Write('|---------------------------|');
  Gotoxy(26,2); Write('|Witam w Quizie o Euro 2012!|');
  Gotoxy(26,3); Write('|    Czas zaczac zabawe!    |');
  Gotoxy(26,4); Write('|---------------------------|');
  Repeat Until Readkey=Chr(13);
  ClrScr;
  Gotoxy(6,1); Write('  /-----------------------------------------------------------\ ');
  Gotoxy(6,2); Write('-<                                                             >-');
  Gotoxy(6,3); Write('  \-----------------------------------------------------------/  ');
  Gotoxy(3,5);  Write('  /--------------------\   /--------------------\   /--------------------\ ');
  Gotoxy(3,6);  Write('-<                      >-<                      >-<                      >-');
  Gotoxy(3,7);  Write('  \--------------------/   \--------------------/   \--------------------/  ');
  Pkt:=0;
  r:=Random(11)+1;
  Repeat
    w:=1;
    i:=11;
    While Repeats[r] Do
    Begin
      r:=Random(11)+1;
      Dec(i);
      If i=0 Then Break;
    End;
    If i=0 Then Break;
    Repeats[r]:=True;
    Gotoxy(9,2); Write(P[r]);
    Repeat
      If w=1 Then TextBackground(6) Else TextBackground(0);
      Gotoxy(06,6); Write('A:',A[r]);
      If w=2 Then TextBackground(6) Else TextBackground(0);
      Gotoxy(31,6); Write('B:',B[r]);
      If w=3 Then TextBackground(6) Else TextBackground(0);
      Gotoxy(56,6); Write('C:',C[r]);
      TextBackground(0);
      z:=Readkey;
      If z=Chr(0) Then z:=Readkey;
      Case z of
        'M' : If w<3 Then Inc(w);
        'K' : If w>1 Then Dec(w);
      End;
    Until z=Chr(13);
    TextBackground(0);
    Case w of
      1 : Begin Gotoxy(06,6); Write('A:',A[r]); End;
      2 : Begin Gotoxy(31,6); Write('B:',B[r]); End;
      3 : Begin Gotoxy(56,6); Write('C:',C[r]); End;
    End;
    Delay(1500);
    If Odp[r]=w Then DobraOdp Else Begin ZlaOdp; Break; End;
    Gotoxy(13,2); Write('                                                        ');
    Gotoxy(06,6); Write('                    ');
    Gotoxy(31,6); Write('                    ');
    Gotoxy(56,6); Write('                    ');
  Until Pkt=10;
  If Pkt>6 Then Wygrana Else Przegrana;
  Gotoxy(28,3);
  Write('Uzbierales ',Pkt*10,'/100 punktow. ');
  Gotoxy(20,4);
  If Pkt<7 Then Write('Aby zdac, musisz miec ponad 60 punktow.');
  Repeat Until Readkey=Chr(13);
End.
edytowany 1x, ostatnio: Randall3
babubabu
Edytuj swój post i przed linijką program quiz; dodaj linijkę <code=delphi> a za linijką End. Dodaj linijkę </code> ok?
babubabu
  • Rejestracja:około 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Łódź
  • Postów:648
0

Proponuję zmienić nazwy zmiennych bo ni cholery nie mogę zrozumieć do czego służą zmienne i,r,w ale może to wina późnej pory.

edytowany 1x, ostatnio: babubabu
R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

Szczerze mówiąc także mi ciężko coś z tego kodu wywnioskować ... Tak jak pisałem post wcześniej, na szybko napisał mi to znajomy, a ja jedynie popracowałem trochę nad wyglądem tego. A niestety mam problem gdy chce więcej pytań dodać i więcej ich zadać w celu udzielenia odpowiedzi. Postaram się go zapytać jak będzie uchwytny ... Niemniej jednak dalej proszę o pomoc.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12167
0
Randall3 napisał(a)

Czy moglibyście zaznaczyć konkretnie które rzeczy muszę zmienić w poniższym programie, aby zmienić ilość pytań na które ktoś ma odpowiedzieć i w którym miejscu zwiększyć tablice pytań, by wszystko działało.

Przede wszystkim pasowałoby żebyś pytania wraz z odpowiedziami wczytywał z pliku do macierzy dynamicznej (np. rekordowej); Dzięki temu aby rozszerzyć ilość pytań wystarczy podmienić plik z pytaniami i gotowe; A tak to musisz bawić sie i ręcznie w kodzie przestawiać wszystko co jest czasochłonne, bo budowa macierzy rekordowej jest dość zawiła i łatwo się pogubić;

Następnie: myślałeś o podzieleniu programu na kilka modułów? Ja na Twoim miejscu przede wszystkim przeniósłbym macierz z pytaniami do innego modułu ponieważ potwornie to wygląda i dość miesza w kodzie; Rozbij cały kod na kilka modułów - będzie Ci łatwiej się w nim odnaleźć, szczególnie dlatego:

Randall3 napisał(a)

Szczerze mówiąc także mi ciężko coś z tego kodu wywnioskować ...

i nie dziwie się, bo niezły bałagan w nim panuje;

Poza tym dodaj więcej procedur/funkcji po to, by kod był bardziej przejrzysty; Tutaj często powtarzają się pewne instrukcje - skorzystaj z regóły DRY; Program ma niewiele linii, a mimo to dość nieprzyjemnie się go interpretuje;


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0

Nie chciałbym zbytnio ingerować w kod, bo tak dobrze na Pascalu się jeszcze nie znam. Jesteś w stanie pomóc na tym co mamy i wskazać miejsca, które trzeba zmienić w celu zmiany ilości pytań?

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12167
1
Kopiuj
Const
  P : Array[1..11]of String =
  ('Oficjalne maskotki, bedace symbolami Euro 2012, to:',
   'W jakim miescie zostal wybrany gospodarz Euro 2012?',
   'W ilu polskich miastach odbeda sie rozgrywki podczas Euro?',
   'Mecz otwarcia bedzie rozegrany na stadionie:',
   'Data rozpoczecia Euro 2012 to:',
   'W ktorym z miast nie bedzie rozgrywek Euro 2012?',
   'Stadion w Gdansku nosi nazwe:',
   'Przygotowania do Euro 2012 w Polsce, sa koordynowane przez:',
   'Euro 2012 to ... z kolei Euro organizowane przez dwa kraje',
   'Mecz finalowy zostanie rozegrany na stadionie?',
   'Mecz finalowy podczas Euro 2012 bedzie rozegrany:');
 
  A   : Array[1..11]of String =
  ('Siemko i Strimko',
   'w Cardiff',
   '5',
   'w Kijowie',
   '1 czerwca 2012',
   'w Wroclawiu',
   'Allianz Arena',
   'Spolke Euro.2012',
   '6',
   'w Warszawie',
   '30 czerwca 2012');

  B   : Array[1..11]of String =
  ('Slavek i Slavko',
   'w Kijowie',
   '4',
   'w Poznaniu',
   '8 czerwca 2012',
   'w Gdansku',
   'PGE Arena',
   'Spolke Euro2012.PL',
   '4',
   'w Kijowie',
   '2 lipca 2012 roku');

  C   : Array[1..11]of String =
  ('Klemek i Ladko',
   'w Madrycie',
   '2',
   'w Warszawie',
   '3 czerwca 2012',
   'w Krakowie',
   'PZU Arena',
   'Spolke PL.2012',
   '3',
   'we Wroclawiu',
   '1 lipca 2012 roku');

  Odp : Array[1..11]of Byte = (2,1,2,3,2,3,2,3,3,2,3);

Tutaj masz wszystkie dane odnośnie pytań;

Teraz aby zmienić ilośc pytań musisz powiększyć wsystkie ww macierze, oraz w kodzie programu pozmieniać liczniki;


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
R3
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:18
0
Kopiuj
program quiz;
Uses Crt;

Var
  z         : Char;
  Pkt,i,r,w : Byte;
  Imie,x    : String;
  Repeats   : Array[1..10]of Boolean;

Const
  P : Array[1..11]of String =
  ('Oficjalne maskotki, bedace symbolami Euro 2012, to:',
   'W jakim miescie zostal wybrany gospodarz Euro 2012?',
   'W ilu polskich miastach odbeda sie rozgrywki podczas Euro?',
   'Mecz otwarcia bedzie rozegrany na stadionie:',
   'Data rozpoczecia Euro 2012 to:',
   'W ktorym z miast nie bedzie rozgrywek Euro 2012?',
   'Stadion w Gdansku nosi nazwe:',
   'Przygotowania do Euro 2012 w Polsce, sa koordynowane przez:',
   'Euro 2012 to ... z kolei Euro organizowane przez dwa kraje',
   'Mecz finalowy zostanie rozegrany na stadionie?',
   'Mecz finalowy podczas Euro 2012 bedzie rozegrany:');
 
  A   : Array[1..11]of String =
  ('Siemko i Strimko',
   'w Cardiff',
   '5',
   'w Kijowie',
   '1 czerwca 2012',
   'w Wroclawiu',
   'Allianz Arena',
   'Spolke Euro.2012',
   '6',
   'w Warszawie',
   '30 czerwca 2012');

  B   : Array[1..11]of String =
  ('Slavek i Slavko',
   'w Kijowie',
   '4',
   'w Poznaniu',
   '8 czerwca 2012',
   'w Gdansku',
   'PGE Arena',
   'Spolke Euro2012.PL',
   '4',
   'w Kijowie',
   '2 lipca 2012 roku');

  C   : Array[1..11]of String =
  ('Klemek i Ladko',
   'w Madrycie',
   '2',
   'w Warszawie',
   '3 czerwca 2012',
   'w Krakowie',
   'PZU Arena',
   'Spolke PL.2012',
   '3',
   'we Wroclawiu',
   '1 lipca 2012 roku');

  Odp : Array[1..11]of Byte = (2,1,2,3,2,3,2,3,3,2,3);

Procedure Wygrana;
Begin
  ClrScr;
  Gotoxy(35,1);
  Write('GRATULACJE');
  Gotoxy(20,2);
  Write('Jestes dobrze przygotowany do Euro 2012!');
End;

Procedure Przegrana;
Begin
  ClrScr;
  Gotoxy(35,1);
  Write('PRZYKRO MI');
  Gotoxy(12,2);
  Write('Do Euro jeszcze troche czasu wiec zdazysz sie przygotowac!');
End;

Procedure DobraOdp;
Begin
  Inc(Pkt);
  TextBackground(2);
  Case w of
    1 : Begin Gotoxy(06,6); Write('A:',A[r]); End;
    2 : Begin Gotoxy(31,6); Write('B:',B[r]); End;
    3 : Begin Gotoxy(56,6); Write('C:',C[r]); End;
  End;
  Gotoxy(23,11); Write('0000   000  0000  0000  00000 00000');
  Gotoxy(23,12); Write('0   0 0   0 0   0 0   0    0  0    ');
  Gotoxy(23,13); Write('0   0 0   0 0000  0000    0   0000 ');
  Gotoxy(23,14); Write('0   0 0   0 0   0 0   0  0    0    ');
  Gotoxy(23,15); Write('0000   000  0000  0   0 00000 00000');
  Delay(1000);
  Window(1,18,80,24);
  TextBackground(0);
  ClrScr;
  Window(1,8,80,25);
End;

Procedure ZlaOdp;
Begin
  TextBackground(4);
  Case w of
    1 : Begin Gotoxy(06,6); Write('A:',A[r]); End;
    2 : Begin Gotoxy(31,6); Write('B:',B[r]); End;
    3 : Begin Gotoxy(56,6); Write('C:',C[r]); End;
  End;
  Gotoxy(33,09); Write('  00             ');
  Gotoxy(33,10); Write('                 ');
  Gotoxy(33,11); Write('00000 0     00000');
  Gotoxy(33,12); Write('   0  0     0    ');
  Gotoxy(33,13); Write('  0   0     0000 ');
  Gotoxy(33,14); Write(' 0    0     0    ');
  Gotoxy(33,15); Write('00000 00000 00000');
  Delay(1000);
  Window(1,18,80,24);
  TextBackground(0);
  ClrScr;
  Window(1,8,80,25);
  Przegrana;
End;


Begin
  ClrScr;
  Randomize;
  Gotoxy(29,2); Write('00000 0   0 0000   000');
  Gotoxy(29,3); Write('0     0   0 0   0 0   0');
  Gotoxy(29,4); Write('0000  0   0 0000  0   0');
  Gotoxy(29,5); Write('0     0   0 0   0 0   0');
  Gotoxy(29,6); Write('00000  000  0   0  000');
  Window(1,8,80,25);
  Gotoxy(26,1); Write('|---------------------------|');
  Gotoxy(26,2); Write('|Witam w Quizie o Euro 2012!|');
  Gotoxy(26,3); Write('|    Czas zaczac zabawe!    |');
  Gotoxy(26,4); Write('|---------------------------|');
  Repeat Until Readkey=Chr(13);
  ClrScr;
  Gotoxy(6,1); Write('  /-----------------------------------------------------------\ ');
  Gotoxy(6,2); Write('-<                                                             >-');
  Gotoxy(6,3); Write('  \-----------------------------------------------------------/  ');
  Gotoxy(3,5);  Write('  /--------------------\   /--------------------\   /--------------------\ ');
  Gotoxy(3,6);  Write('-<                      >-<                      >-<                      >-');
  Gotoxy(3,7);  Write('  \--------------------/   \--------------------/   \--------------------/  ');
  Pkt:=0;
  r:=Random(11)+1;
  Repeat
    w:=1;
    i:=11;
    While Repeats[r] Do
    Begin
      r:=Random(11)+1;
      Dec(i);
      If i=0 Then Break;
    End;
    If i=0 Then Break;
    Repeats[r]:=True;
    Gotoxy(9,2); Write(P[r]);
    Repeat
      If w=1 Then TextBackground(6) Else TextBackground(0);
      Gotoxy(06,6); Write('A:',A[r]);
      If w=2 Then TextBackground(6) Else TextBackground(0);
      Gotoxy(31,6); Write('B:',B[r]);
      If w=3 Then TextBackground(6) Else TextBackground(0);
      Gotoxy(56,6); Write('C:',C[r]);
      TextBackground(0);
      z:=Readkey;
      If z=Chr(0) Then z:=Readkey;
      Case z of
        'M' : If w<3 Then Inc(w);
        'K' : If w>1 Then Dec(w);
      End;
    Until z=Chr(13);
    TextBackground(0);
    Case w of
      1 : Begin Gotoxy(06,6); Write('A:',A[r]); End;
      2 : Begin Gotoxy(31,6); Write('B:',B[r]); End;
      3 : Begin Gotoxy(56,6); Write('C:',C[r]); End;
    End;
    Delay(1500);
    If Odp[r]=w Then DobraOdp Else Begin ZlaOdp; Break; End;
    Gotoxy(13,2); Write('                                                        ');
    Gotoxy(06,6); Write('                    ');
    Gotoxy(31,6); Write('                    ');
    Gotoxy(56,6); Write('                    ');
  Until Pkt=10;
  If Pkt>6 Then Wygrana Else Przegrana;
  Gotoxy(28,3);
  Write('Uzbierales ',Pkt*10,'/100 punktow. ');
  Gotoxy(20,4);
  If Pkt<7 Then Write('Aby zdac, musisz miec ponad 60 punktow.');
  Repeat Until Readkey=Chr(13);
End.

Czyli tak to ma wyglądać? A w przypadku zmiany ilości pytań, powiększam tablice i zmieniam wartości w programie, które obecnie w większości ustawione są na wartość 11?

edytowany 1x, ostatnio: Randall3
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12167
0
Randall3 napisał(a)

Czyli tak to ma wyglądać?

Mniej więcej tak, ale jeszcze można dużo zmienić; Przede wszystkim przenieś deklaracje macierzy do innego modułu, ponieważ dużo zajmują; Jeśli umieścisz je w innym module zyskasz trochę przejrzystości;

Randall3 napisał(a)

A w przypadku zmiany ilości pytań, powiększam tablice i zmieniam wartości w programie, które obecnie w większości ustawione są na wartość 11?

No tak, wszędzie, gdzie wpisane jest na sztywno 11 zamień to na funkcję High - wtedy ilość pytań będziesz zmieniał tylko w jednym miejscu, a wszędzie w programie automatycznie zmiany będą obsługiwane; Chodzi przede wszystkim o liczniki pętli - teraz masz ustawione na sztywno 11 i jeśli zmienisz wielkość macierzy z pytaniami, będziesz musiał znaleźć wszystkie odwołania do górnego indeksu macierzy i pozmieniać je; Podam Ci przykład - jeśli pętle ustawisz tak:

Kopiuj
var
  I: Word;
begin
  for I := 0 to High(Tab) do
    {...}

  {...}
end;

To choćby nie wiem ile elementów miała macierz Tab to i tak pętla zawsze będzie przechodzić przez wszystkie elementy macierzy aż do ostatniego; U Ciebie tyczy się to przede wszystkim losowania r := Random(11) + 1, gdzie Random(11) zamieniasz na Random(High(Id_Tablicy));

Jeszcze możesz dodać kilka procedur, które znacznie skrócą kod oraz zwiększą jego czytelność; Musisz znaleźć w kodzie instrukcje, które nałogowo powarzasz; W pierwszej kolejności co mi się rzuciło w oczy to wyświetlanie napisów; W kółko ustawiasz kursor w danej pozycji i wyświetlasz napis, np.:

Kopiuj
Gotoxy(23,11); Write('0000   000  0000  0000  00000 00000');
Gotoxy(23,12); Write('0   0 0   0 0   0 0   0    0  0    ');
Gotoxy(23,13); Write('0   0 0   0 0000  0000    0   0000 ');
Gotoxy(23,14); Write('0   0 0   0 0   0 0   0  0    0    ');
Gotoxy(23,15); Write('0000   000  0000  0   0 00000 00000');

czy:

Kopiuj
Gotoxy(26,1); Write('|---------------------------|');
Gotoxy(26,2); Write('|Witam w Quizie o Euro 2012!|');
Gotoxy(26,3); Write('|    Czas zaczac zabawe!    |');
Gotoxy(26,4); Write('|---------------------------|');

Napisz sobie procedurę, która w parametrach przyjmie nowe współrzędne kursora oraz napis do wyświetlenia:

Kopiuj
procedure WriteXY(X, Y: Byte; Value: String);
begin
  GoToXY(X, Y);
  Write(Value);
end;

Dzięki temu będziesz mógł napisać to:

Kopiuj
case W of
  1: WriteXY(6, 6,  'A:',A[r]);
  2: WriteXY(31, 6, 'B:',B[r]);
  3: WriteXY(56, 6, 'C:',C[r]);
end;

zamiast tego:

Kopiuj
Case w of
  1 : Begin Gotoxy(06,6); Write('A:',A[r]); End;
  2 : Begin Gotoxy(31,6); Write('B:',B[r]); End;
  3 : Begin Gotoxy(56,6); Write(); End;
End;

Możesz jeszcze wiele zmienić, ale pomyśl sam co jeszcze można i co będziesz umiał zrobić;


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
B1
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 12 lat
0

Witam wszystkich forumowiczów jako iż jestem tu nowy:)

Chciałem użyć powyższego kodu ale po wklejaniu go do delphi7 zapisaniu i próbie skompilowania wyskakuje mi komunikat: Error in module Unit1: Declaration of class TForm1 is missing or incorrect. Wie ktoś może o co chodzi?? Musze do tego robić jakąś bazę danych?? Dodam jeszcze że zaczynam dopiero swoją przygodę z programowaniem.

_13th_Dragon
Bo to jest tryb konsolowy.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12167
0
Bartosz11 napisał(a)

Dodam jeszcze że zaczynam dopiero swoją przygodę z programowaniem.

To może najpierw poucz się kodzenia, zanim będziesz chciał wykorzystać kody znalezione w sieci; Więc polecam pouczyć się z jakiegoś dobrego kursu lub książki, następnie poznać dobrze środowisko, a dopiero potem próbować coś działać;

A błąd dotyczy tego, że próbujesz wykorzystać kod aplikacji okienkowej w aplikacji konsolowej.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
B1
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 12 lat
0
furious programming napisał(a):
Bartosz11 napisał(a)

Dodam jeszcze że zaczynam dopiero swoją przygodę z programowaniem.

To może najpierw poucz się kodzenia, zanim będziesz chciał wykorzystać kody znalezione w sieci; Więc polecam pouczyć się z jakiegoś dobrego kursu lub książki, następnie poznać dobrze środowisko, a dopiero potem próbować coś działać;

Czytałem kompendium na waszym forum i miałem jakieś podstawy na studiach ale do dość obszerny dział żeby to wszystko ogarnąć. Nie muszę być jakimś super programistą bo nie taki mój kierunek :P Chcę tylko odpalić ten program i go edytować...

furious programming napisał(a):

A błąd dotyczy tego, że próbujesz wykorzystać kod aplikacji okienkowej w aplikacji konsolowej.

A jak odpalić aplikację okienkową w Delphi7 File>New> i co dalej???

edytowany 1x, ostatnio: Bartosz11
flowCRANE
File > New > Application
flowCRANE
Ale i tak musisz się pouczyć;
B1
Odpaliłem tak jak mówiliście i w Delphi 7 mam nadal ten sam błąd a w Lazarusie pokazuje mi się teraz coś takiego: quiz.pas(1.1) Fatal: Syntax error, "UNIT" expected but "PROGRAM" found
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12167
0
Bartosz11 napisał(a)

Odpaliłem tak jak mówiliście i w Delphi 7 mam nadal ten sam błąd a w Lazarusie pokazuje mi się teraz coś takiego: quiz.pas(1.1) Fatal: Syntax error, "UNIT" expected but "PROGRAM" found

Ehhh... Propunuję najpierw pouczyć się tworzenia aplikacji okienkowych, a dopiero później cokolwiek próbować; Tak się właśnie kończy korzystanie z gotowców; Programowanie to nie sztuka kopiowania i wklejania kodu - każda instrukcja ma swoje miejsce i przeznaczenie, więc żeby dany kod zastosować, to trzeba go rozumieć; Ty nie znasz praktycznie w ogóle programowania zorientowanego obiektowo, więc każda aplikacja okienkowa będzie dla Ciebie niezrozumiała;

Błąd quiz.pas(1.1) Fatal: Syntax error, "UNIT" expected but "PROGRAM" found oznacza próbę wykorzystania głównego kodu programu (zapoczątkowanego słowem program) w module, który ma zupełnie inną budowę (kod modułu zaczyna się od słowa unit) i dlatego kompilator sygnalizuje porażkę...


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 3x, ostatnio: flowCRANE
olesio
To "kd" to chyba literówka? Albo już powielasz gimbusiarską, debilną według mnie modę, na pisanie "bd / cb / wgl" :/
flowCRANE
Nie, nie, nie - zwykła literówka - nie przycisnąłem o; Nie mam zamiaru powielać tak idiotycznych form zapisu, mnie one niesamowicie denerwują i nigdy ich nie stosuję; Dzięki za zwrócenie uwagi... ;)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)