estefania_exam 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/Guardfile +39 -0
- data/LICENSE.txt +22 -0
- data/README.md +12 -0
- data/Rakefile +14 -0
- data/exam.gemspec +28 -0
- data/lib/doc/Exam.html +114 -0
- data/lib/doc/Exam/Examen.html +350 -0
- data/lib/doc/Interfaz.html +285 -0
- data/lib/doc/List.html +453 -0
- data/lib/doc/Node.html +170 -0
- data/lib/doc/Object.html +121 -0
- data/lib/doc/Question.html +309 -0
- data/lib/doc/SimpleSelection.html +275 -0
- data/lib/doc/VerdaderoFalso.html +228 -0
- data/lib/doc/created.rid +9 -0
- data/lib/doc/fonts.css +167 -0
- data/lib/doc/fonts/Lato-Light.ttf +0 -0
- data/lib/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/lib/doc/fonts/Lato-Regular.ttf +0 -0
- data/lib/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/lib/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/lib/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/lib/doc/images/add.png +0 -0
- data/lib/doc/images/arrow_up.png +0 -0
- data/lib/doc/images/brick.png +0 -0
- data/lib/doc/images/brick_link.png +0 -0
- data/lib/doc/images/bug.png +0 -0
- data/lib/doc/images/bullet_black.png +0 -0
- data/lib/doc/images/bullet_toggle_minus.png +0 -0
- data/lib/doc/images/bullet_toggle_plus.png +0 -0
- data/lib/doc/images/date.png +0 -0
- data/lib/doc/images/delete.png +0 -0
- data/lib/doc/images/find.png +0 -0
- data/lib/doc/images/loadingAnimation.gif +0 -0
- data/lib/doc/images/macFFBgHack.png +0 -0
- data/lib/doc/images/package.png +0 -0
- data/lib/doc/images/page_green.png +0 -0
- data/lib/doc/images/page_white_text.png +0 -0
- data/lib/doc/images/page_white_width.png +0 -0
- data/lib/doc/images/plugin.png +0 -0
- data/lib/doc/images/ruby.png +0 -0
- data/lib/doc/images/tag_blue.png +0 -0
- data/lib/doc/images/tag_green.png +0 -0
- data/lib/doc/images/transparent.png +0 -0
- data/lib/doc/images/wrench.png +0 -0
- data/lib/doc/images/wrench_orange.png +0 -0
- data/lib/doc/images/zoom.png +0 -0
- data/lib/doc/index.html +99 -0
- data/lib/doc/js/darkfish.js +140 -0
- data/lib/doc/js/jquery.js +4 -0
- data/lib/doc/js/navigation.js +142 -0
- data/lib/doc/js/search.js +109 -0
- data/lib/doc/js/search_index.js +1 -0
- data/lib/doc/js/searcher.js +228 -0
- data/lib/doc/rdoc.css +580 -0
- data/lib/doc/table_of_contents.html +186 -0
- data/lib/exam.rb +46 -0
- data/lib/exam/interfaz.rb +49 -0
- data/lib/exam/list.rb +111 -0
- data/lib/exam/node.rb +5 -0
- data/lib/exam/question.rb +34 -0
- data/lib/exam/simpleSelection.rb +29 -0
- data/lib/exam/verdaderoFalso.rb +21 -0
- data/lib/exam/version.rb +3 -0
- data/lib/quiz.rb +61 -0
- data/lib/quiz/answer.rb +25 -0
- data/lib/quiz/question.rb +29 -0
- data/spec/exam_spec.rb +297 -0
- data/spec/quiz_spec.rb +55 -0
- data/spec/spec_helper.rb +19 -0
- metadata +221 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
|
|
7
|
+
<title>Table of Contents - RDoc Documentation</title>
|
|
8
|
+
|
|
9
|
+
<link href="./fonts.css" rel="stylesheet">
|
|
10
|
+
<link href="./rdoc.css" rel="stylesheet">
|
|
11
|
+
|
|
12
|
+
<script type="text/javascript">
|
|
13
|
+
var rdoc_rel_prefix = "./";
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<script src="./js/jquery.js"></script>
|
|
17
|
+
<script src="./js/navigation.js"></script>
|
|
18
|
+
<script src="./js/search_index.js"></script>
|
|
19
|
+
<script src="./js/search.js"></script>
|
|
20
|
+
<script src="./js/searcher.js"></script>
|
|
21
|
+
<script src="./js/darkfish.js"></script>
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
<body id="top" class="table-of-contents">
|
|
25
|
+
<main role="main">
|
|
26
|
+
<h1 class="class">Table of Contents - RDoc Documentation</h1>
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
<h2 id="classes">Classes and Modules</h2>
|
|
30
|
+
<ul>
|
|
31
|
+
<li class="module">
|
|
32
|
+
<a href="Exam.html">Exam</a>
|
|
33
|
+
</li>
|
|
34
|
+
<li class="class">
|
|
35
|
+
<a href="Exam/Examen.html">Exam::Examen</a>
|
|
36
|
+
</li>
|
|
37
|
+
<li class="class">
|
|
38
|
+
<a href="Interfaz.html">Interfaz</a>
|
|
39
|
+
</li>
|
|
40
|
+
<li class="class">
|
|
41
|
+
<a href="List.html">List</a>
|
|
42
|
+
</li>
|
|
43
|
+
<li class="class">
|
|
44
|
+
<a href="Node.html">Node</a>
|
|
45
|
+
</li>
|
|
46
|
+
<li class="class">
|
|
47
|
+
<a href="Object.html">Object</a>
|
|
48
|
+
</li>
|
|
49
|
+
<li class="class">
|
|
50
|
+
<a href="Question.html">Question</a>
|
|
51
|
+
</li>
|
|
52
|
+
<li class="class">
|
|
53
|
+
<a href="SimpleSelection.html">SimpleSelection</a>
|
|
54
|
+
</li>
|
|
55
|
+
<li class="class">
|
|
56
|
+
<a href="VerdaderoFalso.html">VerdaderoFalso</a>
|
|
57
|
+
</li>
|
|
58
|
+
</ul>
|
|
59
|
+
|
|
60
|
+
<h2 id="methods">Methods</h2>
|
|
61
|
+
<ul>
|
|
62
|
+
|
|
63
|
+
<li class="method">
|
|
64
|
+
<a href="Exam/Examen.html#method-c-new">::new</a>
|
|
65
|
+
—
|
|
66
|
+
<span class="container">Exam::Examen</span>
|
|
67
|
+
|
|
68
|
+
<li class="method">
|
|
69
|
+
<a href="VerdaderoFalso.html#method-c-new">::new</a>
|
|
70
|
+
—
|
|
71
|
+
<span class="container">VerdaderoFalso</span>
|
|
72
|
+
|
|
73
|
+
<li class="method">
|
|
74
|
+
<a href="Question.html#method-c-new">::new</a>
|
|
75
|
+
—
|
|
76
|
+
<span class="container">Question</span>
|
|
77
|
+
|
|
78
|
+
<li class="method">
|
|
79
|
+
<a href="SimpleSelection.html#method-c-new">::new</a>
|
|
80
|
+
—
|
|
81
|
+
<span class="container">SimpleSelection</span>
|
|
82
|
+
|
|
83
|
+
<li class="method">
|
|
84
|
+
<a href="List.html#method-c-new">::new</a>
|
|
85
|
+
—
|
|
86
|
+
<span class="container">List</span>
|
|
87
|
+
|
|
88
|
+
<li class="method">
|
|
89
|
+
<a href="Interfaz.html#method-c-new">::new</a>
|
|
90
|
+
—
|
|
91
|
+
<span class="container">Interfaz</span>
|
|
92
|
+
|
|
93
|
+
<li class="method">
|
|
94
|
+
<a href="Question.html#method-i-3C-3D-3E">#<=></a>
|
|
95
|
+
—
|
|
96
|
+
<span class="container">Question</span>
|
|
97
|
+
|
|
98
|
+
<li class="method">
|
|
99
|
+
<a href="Node.html#method-i-3C-3D-3E">#<=></a>
|
|
100
|
+
—
|
|
101
|
+
<span class="container">Node</span>
|
|
102
|
+
|
|
103
|
+
<li class="method">
|
|
104
|
+
<a href="Question.html#method-i-3D-3D">#==</a>
|
|
105
|
+
—
|
|
106
|
+
<span class="container">Question</span>
|
|
107
|
+
|
|
108
|
+
<li class="method">
|
|
109
|
+
<a href="SimpleSelection.html#method-i-answers_to_s">#answers_to_s</a>
|
|
110
|
+
—
|
|
111
|
+
<span class="container">SimpleSelection</span>
|
|
112
|
+
|
|
113
|
+
<li class="method">
|
|
114
|
+
<a href="Interfaz.html#method-i-compararRespuestas">#compararRespuestas</a>
|
|
115
|
+
—
|
|
116
|
+
<span class="container">Interfaz</span>
|
|
117
|
+
|
|
118
|
+
<li class="method">
|
|
119
|
+
<a href="List.html#method-i-delete">#delete</a>
|
|
120
|
+
—
|
|
121
|
+
<span class="container">List</span>
|
|
122
|
+
|
|
123
|
+
<li class="method">
|
|
124
|
+
<a href="Exam/Examen.html#method-i-each">#each</a>
|
|
125
|
+
—
|
|
126
|
+
<span class="container">Exam::Examen</span>
|
|
127
|
+
|
|
128
|
+
<li class="method">
|
|
129
|
+
<a href="List.html#method-i-each">#each</a>
|
|
130
|
+
—
|
|
131
|
+
<span class="container">List</span>
|
|
132
|
+
|
|
133
|
+
<li class="method">
|
|
134
|
+
<a href="List.html#method-i-insert">#insert</a>
|
|
135
|
+
—
|
|
136
|
+
<span class="container">List</span>
|
|
137
|
+
|
|
138
|
+
<li class="method">
|
|
139
|
+
<a href="List.html#method-i-insertElements">#insertElements</a>
|
|
140
|
+
—
|
|
141
|
+
<span class="container">List</span>
|
|
142
|
+
|
|
143
|
+
<li class="method">
|
|
144
|
+
<a href="Exam/Examen.html#method-i-insertQuestion">#insertQuestion</a>
|
|
145
|
+
—
|
|
146
|
+
<span class="container">Exam::Examen</span>
|
|
147
|
+
|
|
148
|
+
<li class="method">
|
|
149
|
+
<a href="Exam/Examen.html#method-i-invertirPreguntas">#invertirPreguntas</a>
|
|
150
|
+
—
|
|
151
|
+
<span class="container">Exam::Examen</span>
|
|
152
|
+
|
|
153
|
+
<li class="method">
|
|
154
|
+
<a href="List.html#method-i-pullHead">#pullHead</a>
|
|
155
|
+
—
|
|
156
|
+
<span class="container">List</span>
|
|
157
|
+
|
|
158
|
+
<li class="method">
|
|
159
|
+
<a href="SimpleSelection.html#method-i-to_s">#to_s</a>
|
|
160
|
+
—
|
|
161
|
+
<span class="container">SimpleSelection</span>
|
|
162
|
+
|
|
163
|
+
<li class="method">
|
|
164
|
+
<a href="Interfaz.html#method-i-to_s">#to_s</a>
|
|
165
|
+
—
|
|
166
|
+
<span class="container">Interfaz</span>
|
|
167
|
+
|
|
168
|
+
<li class="method">
|
|
169
|
+
<a href="Exam/Examen.html#method-i-to_s">#to_s</a>
|
|
170
|
+
—
|
|
171
|
+
<span class="container">Exam::Examen</span>
|
|
172
|
+
|
|
173
|
+
<li class="method">
|
|
174
|
+
<a href="VerdaderoFalso.html#method-i-to_s">#to_s</a>
|
|
175
|
+
—
|
|
176
|
+
<span class="container">VerdaderoFalso</span>
|
|
177
|
+
</ul>
|
|
178
|
+
</main>
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
<footer id="validator-badges" role="contentinfo">
|
|
182
|
+
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
|
183
|
+
<p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.2.
|
|
184
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
|
185
|
+
</footer>
|
|
186
|
+
|
data/lib/exam.rb
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require_relative "exam/version"
|
|
2
|
+
require_relative "exam/simpleSelection.rb"
|
|
3
|
+
require_relative "exam/list.rb"
|
|
4
|
+
require_relative "exam/verdaderoFalso.rb"
|
|
5
|
+
# Módulo que contiene la clase Examen.
|
|
6
|
+
module Exam
|
|
7
|
+
# Esta clase permite crear un examen donde se almacenan preguntas.
|
|
8
|
+
class Examen
|
|
9
|
+
include Enumerable
|
|
10
|
+
# Atributo que almacena un listado de preguntas para el examen
|
|
11
|
+
attr_reader :preguntas
|
|
12
|
+
# Inicialización del conjunto de preguntas del examen.
|
|
13
|
+
def initialize (listaPreguntas)
|
|
14
|
+
@preguntas = listaPreguntas
|
|
15
|
+
end
|
|
16
|
+
# Método que permite la inserción de una pregunta en el listado del examen
|
|
17
|
+
def insertQuestion(question)
|
|
18
|
+
nodoNuevo = Node.new(question,nil,@preguntas.cola)
|
|
19
|
+
nodoInsertado = @preguntas.insert(nodoNuevo)
|
|
20
|
+
nodoInsertado.value
|
|
21
|
+
end
|
|
22
|
+
#Método para invertir la lista
|
|
23
|
+
def invertirPreguntas
|
|
24
|
+
cadena=""
|
|
25
|
+
@preguntas.reverse_each do |preg|
|
|
26
|
+
cadena += preg.to_s
|
|
27
|
+
end
|
|
28
|
+
cadena
|
|
29
|
+
end
|
|
30
|
+
# Método que devuelve una cadena con las preguntas del examen
|
|
31
|
+
def to_s
|
|
32
|
+
cadena =""
|
|
33
|
+
for i in @preguntas do
|
|
34
|
+
cadena +=i.to_s
|
|
35
|
+
end
|
|
36
|
+
cadena
|
|
37
|
+
end
|
|
38
|
+
# Método que hay que implementar al incluir el Mixin Enumerable. LLamada al each de la lista de preguntas.
|
|
39
|
+
def each
|
|
40
|
+
@preguntas.each
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require_relative "../exam.rb"
|
|
2
|
+
# Clase que permite representar un examen con sus preguntas y comprobar la puntuación del mismo.
|
|
3
|
+
class Interfaz
|
|
4
|
+
# Atributo que tendrá el examen sobre el que se realizarán las comprobaciones.
|
|
5
|
+
attr_reader :examen
|
|
6
|
+
# Inicialización del atributo examen.
|
|
7
|
+
def initialize(examen)
|
|
8
|
+
@examen = examen
|
|
9
|
+
|
|
10
|
+
end
|
|
11
|
+
=begin
|
|
12
|
+
Método que en función de unas respuestas proporcionadas por el usuario comprueba la nota obtenida en el
|
|
13
|
+
examen y se la muestra al usuario.
|
|
14
|
+
=end
|
|
15
|
+
def compararRespuestas(respuestasUsuario)
|
|
16
|
+
iterador =0
|
|
17
|
+
respuestasCorrectas = 0
|
|
18
|
+
|
|
19
|
+
for i in @examen.preguntas do
|
|
20
|
+
if i.respuestaCorrecta == respuestasUsuario[iterador]
|
|
21
|
+
respuestasCorrectas += 1
|
|
22
|
+
end
|
|
23
|
+
iterador +=1
|
|
24
|
+
end
|
|
25
|
+
if respuestasCorrectas < (iterador/2)+1
|
|
26
|
+
mensaje = "Ha suspendido el examen: #{respuestasCorrectas}/#{iterador}"
|
|
27
|
+
else
|
|
28
|
+
if respuestasCorrectas == iterador
|
|
29
|
+
mensaje = "Su nota es: Sobresaliente 10"
|
|
30
|
+
else
|
|
31
|
+
mensaje = "Ha aprobado el examen: #{respuestasCorrectas}/#{iterador}"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
mensaje
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Método que devuelve una cadena con las preguntas ordenadas de menor a mayor.
|
|
38
|
+
def to_s
|
|
39
|
+
cadena=""
|
|
40
|
+
preguntas = @examen.preguntas.sort{|p1,p2| p1<=>p2}
|
|
41
|
+
for i in preguntas do
|
|
42
|
+
cadena +=i.to_s
|
|
43
|
+
end
|
|
44
|
+
cadena
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
end
|
data/lib/exam/list.rb
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
require_relative "node.rb"
|
|
2
|
+
# Clase que permitirá crear una lista de objetos.
|
|
3
|
+
class Node
|
|
4
|
+
include Comparable
|
|
5
|
+
=begin
|
|
6
|
+
Método que se ha de implementar al incluir el Mixin Comparable y con el que se hace la comparativa
|
|
7
|
+
entre el valor del nodo y otro pasado por parámetro
|
|
8
|
+
=end
|
|
9
|
+
def <=> (other)
|
|
10
|
+
value <=> other.value
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
# Clase que permite crear un listado de nodos. Se ha incluido el Mixin Enumerable.
|
|
14
|
+
class List
|
|
15
|
+
include Enumerable
|
|
16
|
+
# Atributos cola y cabeza que permitirán la identificación del principio y fin de la lista.
|
|
17
|
+
attr_reader :cabeza,:cola
|
|
18
|
+
# Inicialización de variables cabeza y cola.
|
|
19
|
+
def initialize(nodoCabeza)
|
|
20
|
+
@cabeza = nodoCabeza
|
|
21
|
+
@cola = @cabeza.next
|
|
22
|
+
end
|
|
23
|
+
# Método que permite extraer la cabeza de la lista
|
|
24
|
+
def pullHead
|
|
25
|
+
if @cabeza != nil
|
|
26
|
+
|
|
27
|
+
contenido = @cabeza.value
|
|
28
|
+
@cabeza = @cabeza.next
|
|
29
|
+
end
|
|
30
|
+
contenido
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
# Método que permite insertar un nodo en la lista
|
|
34
|
+
def insert(node)
|
|
35
|
+
if @cola == nil
|
|
36
|
+
node.anterior = @cabeza
|
|
37
|
+
@cola = node
|
|
38
|
+
@cabeza.next = @cola
|
|
39
|
+
|
|
40
|
+
else
|
|
41
|
+
@cola.next = node
|
|
42
|
+
@cola.next.anterior = @cola
|
|
43
|
+
@cola = @cola.next
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
@cola
|
|
47
|
+
end
|
|
48
|
+
# Método que recibe un conjunto de nodos y los inserta en la lista.
|
|
49
|
+
def insertElements(arrayNodos)
|
|
50
|
+
i=0
|
|
51
|
+
if @cola == nil
|
|
52
|
+
arrayNodos[0].anterior = @cabeza
|
|
53
|
+
@cola = arrayNodos[0]
|
|
54
|
+
@cabeza.next = @cola
|
|
55
|
+
i += 1
|
|
56
|
+
end
|
|
57
|
+
while i<arrayNodos.length
|
|
58
|
+
arrayNodos[i].anterior = @cola
|
|
59
|
+
@cola.next = arrayNodos[i]
|
|
60
|
+
@cola = @cola.next
|
|
61
|
+
|
|
62
|
+
i +=1
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
@cola #Se devuelve el ultimo nodo insertado
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
# Método que permite eliminar un nodo de lista independientemente de su posición en ella.
|
|
69
|
+
def delete(nodo)
|
|
70
|
+
if nodo == @cola
|
|
71
|
+
contenido = @cola.value
|
|
72
|
+
@cola = nodo.anterior
|
|
73
|
+
@cola.next = nil
|
|
74
|
+
|
|
75
|
+
else
|
|
76
|
+
if nodo == @cabeza
|
|
77
|
+
|
|
78
|
+
pullHead(nodo)
|
|
79
|
+
|
|
80
|
+
else
|
|
81
|
+
actual = @cabeza
|
|
82
|
+
while actual != nodo
|
|
83
|
+
actual = actual.next
|
|
84
|
+
end
|
|
85
|
+
anterior = actual.anterior
|
|
86
|
+
siguiente = actual.next
|
|
87
|
+
anterior.next = siguiente
|
|
88
|
+
siguiente.anterior = anterior
|
|
89
|
+
contenido = siguiente.value
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
contenido
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
=begin
|
|
97
|
+
Método implementado al incluir el Mixin Enumerable y con el cual devolvemos el valor de cada nodo de la
|
|
98
|
+
lista
|
|
99
|
+
=end
|
|
100
|
+
def each
|
|
101
|
+
actual = @cabeza
|
|
102
|
+
while actual != nil
|
|
103
|
+
yield actual.value
|
|
104
|
+
actual = actual.next
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
end
|
data/lib/exam/node.rb
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
Clase que representa una pregunta y que contiene las posibles respuestas así como la opción correcta.
|
|
3
|
+
Se incluye el Mixin Comparable.
|
|
4
|
+
=end
|
|
5
|
+
class Question
|
|
6
|
+
include Comparable
|
|
7
|
+
# Atributos que almacenarán el enunciado (ask), la dificultad (difficulty) y la opción correcta (respuestaCorrecta)
|
|
8
|
+
attr_reader :ask,:difficulty,:respuestaCorrecta
|
|
9
|
+
# Inicialización de la pregunta, recogiendo los atributos ask, respuestaCorrecta y difficulty (por defecto 0).
|
|
10
|
+
def initialize(ask,respuestaCorrecta,difficulty=0)
|
|
11
|
+
@ask,@respuestaCorrecta,@difficulty = ask,respuestaCorrecta,difficulty
|
|
12
|
+
end
|
|
13
|
+
=begin
|
|
14
|
+
Método que hace la comparativa entre preguntas en función de su dificultad y sólo si la pasada por
|
|
15
|
+
parámetro es también una Question
|
|
16
|
+
=end
|
|
17
|
+
def <=> (other)
|
|
18
|
+
return nil unless other.is_a?Question
|
|
19
|
+
@difficulty <=> other.difficulty
|
|
20
|
+
end
|
|
21
|
+
=begin
|
|
22
|
+
Método que invalida el == y lo ajusta en el caso de que se den dos preguntas con la misma dificultad
|
|
23
|
+
donde entonces se determinará que realmente son iguales si tienen además el mismo enunciado (ask).
|
|
24
|
+
=end
|
|
25
|
+
def == (other)
|
|
26
|
+
return nil unless other.is_a?Question
|
|
27
|
+
iguales = false
|
|
28
|
+
if (self.difficulty == other.difficulty) && (self.ask == other.ask)
|
|
29
|
+
iguales = true
|
|
30
|
+
end
|
|
31
|
+
iguales
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require_relative "../exam/question.rb"
|
|
2
|
+
# Clase que hereda de Question y que permitirá crear preguntas con muchas opciones de respuesta.
|
|
3
|
+
class SimpleSelection < Question
|
|
4
|
+
# Atributo que almacenará las opciones de respuesta para la pregunta.
|
|
5
|
+
attr_reader :answers
|
|
6
|
+
=begin
|
|
7
|
+
Inicialización de las variables ask, answers, respuestaCorrecta y difficulty. Ésta última con valor por
|
|
8
|
+
defecto a 0. Para inicializar se llamará al método super que mandará la información al constructor
|
|
9
|
+
de la clase madre (Question).
|
|
10
|
+
=end
|
|
11
|
+
def initialize(ask, answers,respuestaCorrecta,difficulty=0)
|
|
12
|
+
super(ask,respuestaCorrecta,difficulty)
|
|
13
|
+
@answers = answers
|
|
14
|
+
end
|
|
15
|
+
# Método que devuelve una cadena con las opciones de respuesta de la pregunta.
|
|
16
|
+
def answers_to_s
|
|
17
|
+
cadena = ""
|
|
18
|
+
@answers.each do |m,i|
|
|
19
|
+
cadena += "#{m})#{i}\n"
|
|
20
|
+
end
|
|
21
|
+
cadena
|
|
22
|
+
end
|
|
23
|
+
# Método que devuelve una cadena con el enunciado y las opciones de respuesta de la pregunta.
|
|
24
|
+
def to_s
|
|
25
|
+
cadena = "#{@ask}\n"
|
|
26
|
+
cadena +=self.answers_to_s
|
|
27
|
+
cadena
|
|
28
|
+
end
|
|
29
|
+
end
|