Moduł interaktywny game

Transkrypt

Moduł interaktywny game
Moduł interaktywny game
Prowadzący: Łukasz Dunaj, strona kółka: atinea.pl/kolko
Bardzo często nieodzowna jest znajomość obecnego czasu systemu bądź okresu, jaki upływa
pomiędzy pewnymi zdarzeniami w programie. Ponadto w niektórych zastosowaniach przydatna jest
możliwość generowania losowych liczb, które mogą przykładowo służyć do testowania pewnych
części programu. Aby sprostać tym wymaganiom programistów w NianioLangu z pomocą
przychodzi moduł game.
Przegląd funkcji bibliotecznych dla modułu game:
game::random(liczba);
game::time();
zwraca losową liczbę naturalną z przedziału [0; liczba – 1],
czyli od 0 do liczba - 1 włącznie
zwraca czas w milisekundach jaki upłynął od 1 stycznia 1970 r
Uruchom i przeanalizuj poniższy program, który losuję liczbę x z przedziału od 0 do 9, a następnie
czeka x sekund.
use console;
use game;
def test::main() {
var x = game::random(10);
var t = game::time();
while (game::time() < t + x * 1000) {
}
console::print('Koniec :)');
}
Zadania
Zadanie 1
Napisz program, który wczyta liczbę n, a następnie wypisze losową liczbę z przedziału od 0 do
n-1.
Przykład 1:
Podaj n: 10
Losowa liczba: 5
Przykład 2:
Podaj n: 42
Losowa liczba: 11
Zadanie 2
Napisz program, który wczyta liczbę a oraz b (b >= a), a następnie wypisze losową liczbę
z przedziału od a do b.
Przykład 1:
Podaj a: 10
Podaj b: 100
Losowa liczba: 50
Przykład 2:
Podaj a: 42
Podaj b: 42
Losowa liczba: 42
Zadanie 3
Napisz program, który wczytując dwie liczby obliczy ile czasu (w pełnych sekundach!) minęło
pomiędzy wpisaniem pierwszej, a drugiej liczby.
Przykład:
Podaj a: 42
Podaj b: 111
Minęło: 8 s
Zadanie 4
Napisz program, który wylosuje dwie liczby a i b z zakresu od 0 do 10, następnie przedstawi je
użytkownikowi jako pytanie z tabliczki mnożenia, a * b = ?
Wczytaj odpowiedź użytkownika, sprawdź ją oraz oblicz ile czasu zajęło mu udzielenie
odpowiedzi.
Przykład 1:
5 * 8 = ?
40
Dobrze! Zajęło Ci to 3s.
Przykład 3:
4 * 2 = ?
9
Źle! Zajęło Ci to 2s.
Zadanie 5
Napisz program, który wczyta liczbę n, a następnie po n sekundach wypisze dowolny komunikat.
Przykład:
Podaj n: 6
Kółko informatyczne!!!
Zadanie 6
Napisz program odliczający co sekundę od 10 do 0. Wskazówka: użyj pętli oraz game::time()
Przykład:
10
9
8
7
6
5
4
3
2
1
Koniec :)
Zadanie 7
Napisz program - grę na szybkość, który odlicza od 3 do 0 i oczekuje na dowolny znak od
użytkownika. Zadaniem gracza jest jak najszybsza reakcja - program powinien wypisać, ile ms
zajęło użytkownikowi wpisanie znaku.
Przykład:
3
2 Ready!
1 Steady!
0 Go!
s
Czas reakcji: 330ms
Zadanie 8
Napisz program, który będzie symulował nauczyciela odpytującego ucznia z tabliczki mnożenia.
Program powinien wczytać odpowiednie parametry (np. ilość pytań, dostępny czas na każde z nich,
zakres liczb, itd.), symulować pytanie (czyli wylosować je, sprawdzić odpowiedź oraz to czy uczeń
nie przekroczył dostępnego czasu) a na końcu wygenerować statystyki sprawdzianu (ile
poprawnych - można w procentach, ile w sumie zajęło, itd.).
Wszelkie ulepszenia i własne inwencje są mile widziane :)
Zadanie 9
Należy tak zmodyfikować poprzednie zadanie, aby działanie (dodawanie, odejmowanie, mnożenie
i dzielenie) również było losowane (w tabliczce mnożenia zawsze było mnożenie).