-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
140 lines (120 loc) · 3.7 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/**
* Verkefni 7 – Reikniæfingarforrit
*
* Forrit sem æfir hraða í að reikna einföld dæmi
*/
// fasti sem segir til um hve marga leiki eigi að spila
const GAMES_TO_PLAY = 10;
var rett = 0;
/**
* Birtir upplýsingar um leik og eftir að notandi samþykkir spilar fyrsta leik
* með kalli í play().
* Eftir leik er notanda boðið að spila annan leik, ef ekki hættir forrit.
*/
function start() {
alert("Markmiðið er að svara eins mörgum af 10 dæmum rétt eins hratt og mögulegt er.");
do {
play();
} while (confirm("Spila annan leik?"));
}
/**
* Spilar einn leik. Heldur utan um hvenær leikur byrjaði, hvenær endar og
* fjölda réttra svara. Eftir leik eru birtar upplýsingar um niðurstöðu:
* Þú svaraðir X af 10 dæmum rétt á Y sekúndum
* Meðalrétt svör á sekúndu eru Z
* Þar sem Y og Z hafa tvo aukastafi.
*
* Ef notandi ýtir á "Cancel" í leik eru skilaboðin "Hætt í leik." birt og engar
* upplsýingar um niðurstöður.
*
*/
function play() {
var birta = true;
rett = 0;
var sec1 = new Date().getTime(); //Tími í upphafi
for(var i = 0; i<GAMES_TO_PLAY; i++){
var a = ask();
if(a === null){
birta = !birta;
break;
}
}
var sec2 = new Date().getTime(); //Tími í lokin
var sec = ((sec2 - sec1)/1000).toFixed(2); //mismunur loka og upphafstíma
var medal = (rett/sec).toFixed(2); //meðalfjöldi réttra spurninga á sekúndu
if(birta === true)
alert("Þú svaraðir " + rett + " af " + GAMES_TO_PLAY + " dæmum rétt á " + sec + " sekúndum \nMeðalrétt svör á sekúndu eru " + medal);
}
/**
* Spyr einnar spurningar og skilar upplýsingum um svar (mögulega með því að
* nota true, false og null ef notandi hættir). Birtir notanda propmpt til að
* svara í og túlkar svarið yfir í tölu.
*
* Mögulegar spurningar eru:
* - `+` dæmi þar sem báðar tölur geta verið á bilinu `[1, 100]`
* - `-` dæmi þar sem báðar tölur geta verið á bilinu `[1, 100]`
* - `*` dæmi þar sem báðar tölur geta verið á bilinu `[1, 10]`
* - `/` dæmi þar sem fyrri tala er á bilinu `[2, 10]` og seinni talan er fyrri
* talan sinnum tala á bilinu `[2, 10]` þ.a. svarið verði alltaf heiltala
*
* Sniðugt væri að færa það að búa til spurningu í nýtt fall sem ask() kallar í.
*/
function spurning(rand){
//if statement fyrir plús spurningu
if(rand === 0){
var a = randomNumber(1,100)
var b = randomNumber(1,100)
const input = prompt("Hvað er " + a + " + " + b + "?");
if(input === null)
return null;
if(parseInt(input) === a+b)
return true;
}
//if statement fyrir mínus spurningu
if(rand === 1){
var a = randomNumber(1,100)
var b = randomNumber(1,100)
const input = prompt("Hvað er " + a + " - " + b + "?");
if(input === null)
return null;
if(parseInt(input) === a-b)
return true;
}
//if statement fyrir margföldunar spurningu
if(rand === 2){
var a = randomNumber(1,10)
var b = randomNumber(1,10)
const input = prompt("Hvað er " + a + " * " + b + "?");
if(input === null)
return null;
if(parseInt(input) === a*b)
return true;
}
//if statement fyrir deilingar spurningu
if(rand === 3){
var a = randomNumber(2,10)
var b = a*randomNumber(2,10)
const input = prompt("Hvað er " + b + " / " + a + "?");
if(input === null)
return null;
if(parseInt(input) === b/a)
return true;
}
}
function ask() {
var s = spurning(randomNumber(0,3));
if(s === true)
rett++;
if(s === null){
alert("Hætt í leik");
return null;
}
}
/**
* Skilar tölu af handahófi á bilinu [min, max]
*/
function randomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// Byrjar leik
start();