methodya commited on
Commit
085114d
·
verified ·
1 Parent(s): c0a803d

Add 2 files

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +545 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Quiz Theory
3
- emoji: 🐨
4
- colorFrom: green
5
- colorTo: purple
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: quiz-theory
3
+ emoji: 🐳
4
+ colorFrom: pink
5
+ colorTo: gray
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,545 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ar" dir="rtl">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>اختبار الفلسفة: النظرية والتجربة</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ @import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;500;700;900&display=swap');
11
+ body {
12
+ font-family: 'Tajawal', sans-serif;
13
+ background-color: #f8fafc;
14
+ }
15
+ .question-card {
16
+ transition: all 0.3s ease;
17
+ }
18
+ .question-card:hover {
19
+ transform: translateY(-5px);
20
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
21
+ }
22
+ .option:hover {
23
+ background-color: #e2e8f0;
24
+ }
25
+ .selected {
26
+ background-color: #2563eb;
27
+ color: white;
28
+ }
29
+ .correct {
30
+ background-color: #10b981;
31
+ color: white;
32
+ }
33
+ .incorrect {
34
+ background-color: #ef4444;
35
+ color: white;
36
+ }
37
+ .progress-bar {
38
+ transition: width 0.5s ease;
39
+ }
40
+ </style>
41
+ </head>
42
+ <body class="bg-gray-50">
43
+ <div class="container mx-auto px-4 py-8 max-w-4xl">
44
+ <!-- Header -->
45
+ <header class="text-center mb-8">
46
+ <h1 class="text-3xl font-bold text-blue-800 mb-2">اختبار الفلسفة: النظرية والتجربة</h1>
47
+ <p class="text-gray-600">اختبار شامل لمحتوى درس النظرية والتجربة في الفلسفة والعلم</p>
48
+ <div class="w-full bg-gray-200 rounded-full h-4 mt-4">
49
+ <div id="progress-bar" class="progress-bar bg-blue-600 h-4 rounded-full" style="width: 0%"></div>
50
+ </div>
51
+ <div class="flex justify-between mt-2 text-sm text-gray-600">
52
+ <span id="progress-text">0/20</span>
53
+ <span id="timer" class="font-bold">20:00</span>
54
+ </div>
55
+ </header>
56
+
57
+ <!-- Quiz Container -->
58
+ <div id="quiz-container" class="space-y-6">
59
+ <!-- Questions will be inserted here by JavaScript -->
60
+ </div>
61
+
62
+ <!-- Navigation Buttons -->
63
+ <div class="flex justify-between mt-8">
64
+ <button id="prev-btn" class="bg-gray-300 hover:bg-gray-400 text-gray-800 font-bold py-2 px-4 rounded-lg hidden">
65
+ <i class="fas fa-arrow-right ml-2"></i> السابق
66
+ </button>
67
+ <button id="next-btn" class="bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-lg">
68
+ التالي <i class="fas fa-arrow-left mr-2"></i>
69
+ </button>
70
+ <button id="submit-btn" class="bg-green-600 hover:bg-green-700 text-white font-bold py-2 px-4 rounded-lg hidden">
71
+ إنهاء الاختبار <i class="fas fa-check mr-2"></i>
72
+ </button>
73
+ </div>
74
+
75
+ <!-- Results Section -->
76
+ <div id="results-section" class="hidden mt-8 p-6 bg-white rounded-lg shadow-lg">
77
+ <h2 class="text-2xl font-bold text-center text-blue-800 mb-4">نتائج الاختبار</h2>
78
+ <div class="flex justify-center mb-6">
79
+ <div class="w-32 h-32 rounded-full bg-blue-100 flex items-center justify-center border-4 border-blue-500">
80
+ <span id="score" class="text-4xl font-bold text-blue-800">0</span>
81
+ <span class="text-xl font-bold text-blue-800">/20</span>
82
+ </div>
83
+ </div>
84
+ <div class="text-center mb-6">
85
+ <p id="result-message" class="text-lg"></p>
86
+ <p id="time-taken" class="text-gray-600 mt-2"></p>
87
+ </div>
88
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
89
+ <div class="bg-green-50 p-4 rounded-lg">
90
+ <h3 class="font-bold text-green-800 mb-2">الإجابات الصحيحة</h3>
91
+ <p id="correct-answers" class="text-green-600">0</p>
92
+ </div>
93
+ <div class="bg-red-50 p-4 rounded-lg">
94
+ <h3 class="font-bold text-red-800 mb-2">الإجابات الخاطئة</h3>
95
+ <p id="incorrect-answers" class="text-red-600">0</p>
96
+ </div>
97
+ </div>
98
+ <div class="mt-6">
99
+ <h3 class="font-bold text-gray-800 mb-2">ملخص الأداء</h3>
100
+ <div id="performance-summary" class="space-y-3">
101
+ <!-- Performance summary will be inserted here -->
102
+ </div>
103
+ </div>
104
+ <button id="restart-btn" class="mt-6 w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-lg">
105
+ إعادة الاختبار <i class="fas fa-redo mr-2"></i>
106
+ </button>
107
+ </div>
108
+ </div>
109
+
110
+ <script>
111
+ // Quiz data
112
+ const quizData = [
113
+ {
114
+ question: "ما المقصود بالنظرية في السياق العلمي؟",
115
+ options: [
116
+ "آراء شخصية أو أحكام تجاه أحداث معينة",
117
+ "الخبرة والحنكة في ممارسة عملية محددة",
118
+ "الأنساق الفكرية المنظمة والمنهجية التي تفسر الظواهر العلمية",
119
+ "المهارة في إجراء التجارب المخبرية"
120
+ ],
121
+ correctAnswer: 2,
122
+ explanation: "في السياق العلمي، النظرية هي النظم والأنساق الفكرية المنظمة والمنهجية والمنطقية التي تتألف منها القوانين والمبادئ العامة لتفسير ظاهرة أو واقعة علمية."
123
+ },
124
+ {
125
+ question: "ما الفرق بين التجريب والتجربة حسب المحتوى؟",
126
+ options: [
127
+ "التجريب هو الملاحظة العادية بينما التجربة تستخدم الأدوات",
128
+ "التجريب عملية أشمل تشمل التجربة كلحظة ضمنه",
129
+ "التجربة هي فرضية بينما التجريب هو قانون علمي",
130
+ "لا فرق بينهما في السياق العلمي"
131
+ ],
132
+ correctAnswer: 1,
133
+ explanation: "التجريب هو عملية أشمل تشمل التجربة كلحظة ضمنه، حيث أن التجريب هو عملية التدخل في الظاهرة وإعادة صناعتها، بينما التجربة هي لحظة ضمن هذا الإجراء."
134
+ },
135
+ {
136
+ question: "ما هي الخطوة الأولى في المنهج العلمي حسب كلود برنار؟",
137
+ options: [
138
+ "صياغة الفرضية",
139
+ "إجراء التجربة",
140
+ "الملاحظة",
141
+ "صياغة القانون العلمي"
142
+ ],
143
+ correctAnswer: 2,
144
+ explanation: "يرى كلود برنار أن الخطوة الأولى هي الملاحظة التي تمكن العالم من متابعة الظاهرة والإلمام بها، سواء بالعين المجردة أو باستخدام الأدوات."
145
+ },
146
+ {
147
+ question: "ما الذي أضافه روني طوم إلى مفهوم التجريب؟",
148
+ options: [
149
+ "أهمية الملاحظة الدقيقة",
150
+ "دور العقل والخيال العلمي في التجربة الذهنية",
151
+ "ضرورة استخدام الأدوات المعقدة",
152
+ "إهمال الجانب النظري"
153
+ ],
154
+ correctAnswer: 1,
155
+ explanation: "أكد روني طوم على دور العقل والخيال العلمي في التجربة الذهنية، حيث أن دراسة الظواهر الميكروسكوبية تتطلب إبداعاً تجريبياً ذهنياً."
156
+ },
157
+ {
158
+ question: "ما هي المشكلة الأساسية في التجريب الكلاسيكي حسب المحتوى؟",
159
+ options: [
160
+ "عدم القدرة على التعامل مع الظواهر المتناهية الصغر",
161
+ "اعتماده الكلي على الخيال العلمي",
162
+ "إهماله للملاحظة العلمية",
163
+ "عدم وجود مشاكل في التجريب الكلاسيكي"
164
+ ],
165
+ correctAnswer: 0,
166
+ explanation: "التجريب الكلاسيكي يعاني من عجز في التعاطي مع الظواهر المتناهية الصغر، مما يحد من قدرته على كشف الحقيقة العلمية في هذه المجالات."
167
+ },
168
+ {
169
+ question: "ما موقف ألبرت أينشتاين من مستقبل الفيزياء المعاصرة؟",
170
+ options: [
171
+ "يجب أن تعتمد على التجربة فقط",
172
+ "يجب أن تكون عقلانية رياضية مبدعة",
173
+ "يجب أن تدمج بين العقل والتجربة بالتساوي",
174
+ "يجب أن تبتعد عن التجريد الرياضي"
175
+ ],
176
+ correctAnswer: 1,
177
+ explanation: "يرى أينشتاين أن مستقبل الفيزياء المعاصرة يقع في قلب العقل الرياضي المبدع الذي يمكننا من إبداع المفاهيم واكتشاف القوانين."
178
+ },
179
+ {
180
+ question: "ما نقد غاستون باشلار للعقلانية الرياضية؟",
181
+ options: [
182
+ "أنها تعتمد كثيراً على التجربة",
183
+ "أنها اشتغال بالعقل في فراغ التطبيق الواقعي",
184
+ "أنها تهمل الجانب النظري",
185
+ "أنها لا تعتمد على الرياضيات"
186
+ ],
187
+ correctAnswer: 1,
188
+ explanation: "يرى باشلار أن العقلانية الرياضية المبدعة هي عقلانية فارغة لأنها اشتغال بالعقل في فراغ التطبيق الواقعي، ويؤكد على ضرورة الحوار بين العقل والتجربة."
189
+ },
190
+ {
191
+ question: "ما معيار علمية النظريات العلمية عند كارل بوبر؟",
192
+ options: [
193
+ "قابليتها للتأكيد والتثبيت",
194
+ "قابليتها للتكذيب والتفنيد",
195
+ "ثبات نتائجها بشكل مطلق",
196
+ "استحالة نقضها"
197
+ ],
198
+ correctAnswer: 1,
199
+ explanation: "يرى بوبر أن معيار علمية النظرية هو قابليتها للتكذيب والتفنيد، حيث أن سلامة التصور النظري ليست مضمونة ويجب أن تكون قابلة للتصحيح."
200
+ },
201
+ {
202
+ question: "ما الذي يقترحه بيير تويليي لضمان تماسك النظريات العلمية؟",
203
+ options: [
204
+ "إخضاعها لاختبار واحد دقيق",
205
+ "إبقائها في عزلتها التجريبية",
206
+ "إخضاعها المستمر لفرضيات إضافية واختبارات متعددة",
207
+ "تثبيتها دون تغيير"
208
+ ],
209
+ correctAnswer: 2,
210
+ explanation: "يقترح تويليي إخضاع النظريات المستمر لفرضيات إضافية واختبارات متعددة لضمان تماسكها المنطقي وقدرتها على مواكبة التحولات العلمية."
211
+ },
212
+ {
213
+ question: "ما المقصود بالخيال التجريبي حسب المحتوى؟",
214
+ options: [
215
+ "القدرة على تصور تجارب غير واقعية",
216
+ "نقلة ثورية لتوسيع الخيال النظري للوصول إلى التجارب الذهنية",
217
+ "إهمال الجانب النظري في العلم",
218
+ "الاعتماد الكلي على الملاحظة"
219
+ ],
220
+ correctAnswer: 1,
221
+ explanation: "الخيال التجريبي هو نقلة ثورية مهمتها توسيع الخيال النظري للوصول إلى التجارب الذهنية التي تدمج بين الاطلاع النظري العميق والأدوات التجريبية."
222
+ },
223
+ {
224
+ question: "ما هي الوظيفة الأساسية للتجربة حسب كلود برنار؟",
225
+ options: [
226
+ "إثبات صحة الفرضية",
227
+ "استبدال الملاحظة",
228
+ "تجاهل النظريات السابقة",
229
+ "إثبات خطأ جميع الفرضيات"
230
+ ],
231
+ correctAnswer: 0,
232
+ explanation: "حسب كلود برنار، وظيفة التجربة الأساسية هي التأكد من صحة الفرضية التي تم صياغتها بناءً على الملاحظة."
233
+ },
234
+ {
235
+ question: "ما الذي يميز الملاحظة العلمية عن الملاحظة العادية؟",
236
+ options: [
237
+ "اعتمادها الكلي على العين المجردة",
238
+ "عدم استخدام أي أدوات",
239
+ "كونها مجهزة بآلات وأدوات علمية في أغلب الأحيان",
240
+ "عدم وجود منهجية فيها"
241
+ ],
242
+ correctAnswer: 2,
243
+ explanation: "الملاحظة العلمية تختلف عن العادية بأنها في أغلب الأحيان مجهزة بآلات وأدوات علمية، ولا تعتمد على العين المجردة إلا في حدود ضيقة."
244
+ },
245
+ {
246
+ question: "ما الشرط الأساسي للفرضية العلمية؟",
247
+ options: [
248
+ "أن تكون غير قابلة للتحقق التجريبي",
249
+ "أن تكون قابلة للتحقق التجريبي ونابعة من الظواهر المدروسة",
250
+ "أن تتناقض مع نفسها",
251
+ "أن تكون بعيدة عن الظواهر المدروسة"
252
+ ],
253
+ correctAnswer: 1,
254
+ explanation: "يشترط في الفرضية العلمية أن تكون قابلة للتحقق التجريبي ونابعة من الظواهر المدروسة ولا تتناقض مع ذاتها."
255
+ },
256
+ {
257
+ question: "ما المقصود باليقين المزدوج عند باشلار؟",
258
+ options: [
259
+ "التأكد من صحة النظرية مرتين",
260
+ "التكامل بين العقل والتجربة في بناء المعرفة العلمية",
261
+ "إهمال التجربة لصالح العقل فقط",
262
+ "إهمال العقل لصالح التجربة فقط"
263
+ ],
264
+ correctAnswer: 1,
265
+ explanation: "اليقين المزدوج عند باشلار هو التكامل بين العقل والتجربة في بناء المعرفة العلمية، حيث لا يمكن للعقل أن يظل منعزلاً عن التجربة."
266
+ },
267
+ {
268
+ question: "ما الذي يميز العقلانية العلمية المعاصرة عن الكلاسيكية؟",
269
+ options: [
270
+ "انغلاقها ورفضها للتجربة",
271
+ "انفتاحها ودمجها بين العقل والتجربة",
272
+ "اعتمادها الكلي على التجربة ورفض العقل",
273
+ "عدم وجود فرق بينهما"
274
+ ],
275
+ correctAnswer: 1,
276
+ explanation: "العقلانية العلمية المعاصرة تختلف عن الكلاسيكية بانفتاحها ودمجها بين العقل والتجربة، بعكس العقلانية الديكارتية الكلاسيكية المنغلقة."
277
+ },
278
+ {
279
+ question: "ما سبب التحولات في النظريات العلمية حسب المحتوى؟",
280
+ options: [
281
+ "ثبات الحقائق العلمية وعدم تغيرها",
282
+ "وجود فراغات نظرية وعوائق ابستمولوجية تحتاج للتعديل",
283
+ "عدم وجود أي أخطاء في النظريات العلمية",
284
+ "عدم حاجة العلم للتطور"
285
+ ],
286
+ correctAnswer: 1,
287
+ explanation: "التحولات في النظريات العلمية تحدث بسبب وجود فراغات نظرية وعوائق ابستمولوجية تحتاج للتعديل، وهذا ما يعطي العلم قوته وقدرته على التطور."
288
+ },
289
+ {
290
+ question: "ما الفائدة من معيار تعدد الاختبارات عند تويليي؟",
291
+ options: [
292
+ "إبقاء النظرية في عزلتها",
293
+ "ضمان تماسك النظرية وقدرتها على مواكبة التحولات",
294
+ "تثبيت النظرية دون تغيير",
295
+ "عدم اختبار النظرية أبداً"
296
+ ],
297
+ correctAnswer: 1,
298
+ explanation: "تعدد الاختبارات عند تويليي يضمن تماسك النظرية المنطقي الداخلي وقدرتها على مواكبة التحولات العلمية وتصحيح نفسها باستمرار."
299
+ },
300
+ {
301
+ question: "ما دور التجربة الذهنية في العلم المعاصر؟",
302
+ options: [
303
+ "استبدال التجربة المخبرية تماماً",
304
+ "توسيع الأداء التجريبي للعالم مع التجربة المخبرية",
305
+ "إهمال الجانب النظري تماماً",
306
+ "عدم وجود أي دور لها"
307
+ ],
308
+ correctAnswer: 1,
309
+ explanation: "التجربة الذهنية في العلم المعاصر توسع الأداء التجريبي للعالم مع التجربة المخبرية، خاصة في دراسة الظواهر الميكروسكوبية."
310
+ },
311
+ {
312
+ question: "ما العلاقة بين النظرية والتجربة في بناء المعرفة العلمية؟",
313
+ options: [
314
+ "النظرية تنتج عن التجربة فقط",
315
+ "التجربة تنتج عن النظرية فقط",
316
+ "علاقة جدلية وتكاملية بينهما",
317
+ "لا توجد أي علاقة بينهما"
318
+ ],
319
+ correctAnswer: 2,
320
+ explanation: "العلاقة بين النظرية والتجربة هي علاقة جدلية وتكاملية في بناء المعرفة العلمية، حيث يتفاعل الجانب النظري مع التجريبي بشكل مستمر."
321
+ },
322
+ {
323
+ question: "ما الذي يميز المنهج التجريبي في العلم؟",
324
+ options: [
325
+ "اعتماده على التأمل فقط",
326
+ "كونه سلسلة من الخطوات المنظمة تبدأ بالملاحظة وتنتهي بصياغة القانون",
327
+ "عدم وجود أي خطوات محددة",
328
+ "إهمال التجربة تماماً"
329
+ ],
330
+ correctAnswer: 1,
331
+ explanation: "المنهج التجريبي في العلم هو سلسلة من الخطوات المنظمة تبدأ بالملاحظة، ثم الفرضية، فالتجربة، وتنتهي بصياغة القانون العلمي."
332
+ }
333
+ ];
334
+
335
+ // Quiz state
336
+ let currentQuestion = 0;
337
+ let score = 0;
338
+ let userAnswers = Array(quizData.length).fill(null);
339
+ let quizCompleted = false;
340
+ let timeLeft = 20 * 60; // 20 minutes in seconds
341
+ let timerInterval;
342
+
343
+ // DOM elements
344
+ const quizContainer = document.getElementById('quiz-container');
345
+ const prevBtn = document.getElementById('prev-btn');
346
+ const nextBtn = document.getElementById('next-btn');
347
+ const submitBtn = document.getElementById('submit-btn');
348
+ const resultsSection = document.getElementById('results-section');
349
+ const progressBar = document.getElementById('progress-bar');
350
+ const progressText = document.getElementById('progress-text');
351
+ const timer = document.getElementById('timer');
352
+ const scoreDisplay = document.getElementById('score');
353
+ const correctAnswersDisplay = document.getElementById('correct-answers');
354
+ const incorrectAnswersDisplay = document.getElementById('incorrect-answers');
355
+ const resultMessage = document.getElementById('result-message');
356
+ const timeTakenDisplay = document.getElementById('time-taken');
357
+ const performanceSummary = document.getElementById('performance-summary');
358
+ const restartBtn = document.getElementById('restart-btn');
359
+
360
+ // Start timer
361
+ function startTimer() {
362
+ updateTimerDisplay();
363
+ timerInterval = setInterval(() => {
364
+ timeLeft--;
365
+ updateTimerDisplay();
366
+ if (timeLeft <= 0) {
367
+ clearInterval(timerInterval);
368
+ submitQuiz();
369
+ }
370
+ }, 1000);
371
+ }
372
+
373
+ // Update timer display
374
+ function updateTimerDisplay() {
375
+ const minutes = Math.floor(timeLeft / 60);
376
+ const seconds = timeLeft % 60;
377
+ timer.textContent = `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
378
+ }
379
+
380
+ // Format time taken
381
+ function formatTimeTaken(seconds) {
382
+ const mins = Math.floor(seconds / 60);
383
+ const secs = seconds % 60;
384
+ return `${mins} دقيقة و ${secs} ثانية`;
385
+ }
386
+
387
+ // Display question
388
+ function displayQuestion(index) {
389
+ const question = quizData[index];
390
+ let optionsHtml = '';
391
+
392
+ question.options.forEach((option, i) => {
393
+ let optionClass = "option p-4 border border-gray-300 rounded-lg mb-2 cursor-pointer";
394
+
395
+ if (userAnswers[index] === i) {
396
+ optionClass += " selected";
397
+ }
398
+
399
+ optionsHtml += `
400
+ <div class="${optionClass}" onclick="selectOption(${i})">
401
+ ${i + 1}. ${option}
402
+ </div>
403
+ `;
404
+ });
405
+
406
+ const questionHtml = `
407
+ <div class="question-card bg-white p-6 rounded-lg shadow-md">
408
+ <h2 class="text-xl font-bold text-gray-800 mb-4">${index + 1}. ${question.question}</h2>
409
+ <div class="options space-y-2">
410
+ ${optionsHtml}
411
+ </div>
412
+ ${quizCompleted && userAnswers[index] !== null ? `
413
+ <div class="mt-4 p-4 rounded-lg ${userAnswers[index] === question.correctAnswer ? 'bg-green-100 text-green-800' : 'bg-red-100 text-red-800'}">
414
+ <strong>${userAnswers[index] === question.correctAnswer ? 'إجابة صحيحة!' : 'إجابة خاطئة!'}</strong>
415
+ <p class="mt-2">${question.explanation}</p>
416
+ </div>
417
+ ` : ''}
418
+ </div>
419
+ `;
420
+
421
+ quizContainer.innerHTML = questionHtml;
422
+ updateProgress();
423
+ updateNavButtons();
424
+ }
425
+
426
+ // Select option
427
+ window.selectOption = function(optionIndex) {
428
+ if (quizCompleted) return;
429
+
430
+ userAnswers[currentQuestion] = optionIndex;
431
+
432
+ // Update display
433
+ const options = document.querySelectorAll('.option');
434
+ options.forEach((option, i) => {
435
+ option.classList.remove('selected');
436
+ if (i === optionIndex) {
437
+ option.classList.add('selected');
438
+ }
439
+ });
440
+ };
441
+
442
+ // Update navigation buttons
443
+ function updateNavButtons() {
444
+ prevBtn.classList.toggle('hidden', currentQuestion === 0);
445
+ nextBtn.classList.toggle('hidden', currentQuestion === quizData.length - 1 || quizCompleted);
446
+ submitBtn.classList.toggle('hidden', currentQuestion !== quizData.length - 1 || quizCompleted);
447
+ }
448
+
449
+ // Update progress
450
+ function updateProgress() {
451
+ const progress = ((currentQuestion + 1) / quizData.length) * 100;
452
+ progressBar.style.width = `${progress}%`;
453
+ progressText.textContent = `${currentQuestion + 1}/${quizData.length}`;
454
+ }
455
+
456
+ // Next question
457
+ nextBtn.addEventListener('click', () => {
458
+ if (currentQuestion < quizData.length - 1) {
459
+ currentQuestion++;
460
+ displayQuestion(currentQuestion);
461
+ }
462
+ });
463
+
464
+ // Previous question
465
+ prevBtn.addEventListener('click', () => {
466
+ if (currentQuestion > 0) {
467
+ currentQuestion--;
468
+ displayQuestion(currentQuestion);
469
+ }
470
+ });
471
+
472
+ // Submit quiz
473
+ function submitQuiz() {
474
+ clearInterval(timerInterval);
475
+ quizCompleted = true;
476
+
477
+ // Calculate score
478
+ score = 0;
479
+ quizData.forEach((question, index) => {
480
+ if (userAnswers[index] === question.correctAnswer) {
481
+ score++;
482
+ }
483
+ });
484
+
485
+ // Display results
486
+ resultsSection.classList.remove('hidden');
487
+ scoreDisplay.textContent = score;
488
+ correctAnswersDisplay.textContent = score;
489
+ incorrectAnswersDisplay.textContent = quizData.length - score;
490
+
491
+ // Result message
492
+ const percentage = (score / quizData.length) * 100;
493
+ if (percentage >= 80) {
494
+ resultMessage.textContent = "ممتاز! لديك فهم قوي لموضوع النظرية والتجربة.";
495
+ resultMessage.className = "text-green-600";
496
+ } else if (percentage >= 60) {
497
+ resultMessage.textContent = "جيد جداً! لديك فهم جيد للموضوع ولكن يمكنك تحسينه أكثر.";
498
+ resultMessage.className = "text-blue-600";
499
+ } else if (percentage >= 40) {
500
+ resultMessage.textContent = "مقبول! لديك فهم أساسي ولكن تحتاج لمراجعة بعض النقاط.";
501
+ resultMessage.className = "text-yellow-600";
502
+ } else {
503
+ resultMessage.textContent = "تحتاج للمزيد من الدراسة! راجع المحتوى وحاول مرة أخرى.";
504
+ resultMessage.className = "text-red-600";
505
+ }
506
+
507
+ // Time taken
508
+ const timeTaken = 20 * 60 - timeLeft;
509
+ timeTakenDisplay.textContent = `الوقت المستغرق: ${formatTimeTaken(timeTaken)}`;
510
+
511
+ // Performance summary
512
+ performanceSummary.innerHTML = '';
513
+ quizData.forEach((question, index) => {
514
+ const isCorrect = userAnswers[index] === question.correctAnswer;
515
+ const summaryItem = document.createElement('div');
516
+ summaryItem.className = `p-3 rounded-lg ${isCorrect ? 'bg-green-100 text-green-800' : 'bg-red-100 text-red-800'}`;
517
+ summaryItem.innerHTML = `
518
+ <p class="font-bold">سؤال ${index + 1}: ${isCorrect ? 'صحيح' : 'خاطئ'}</p>
519
+ ${!isCorrect ? `<p class="text-sm mt-1">الإجابة الصحيحة: ${question.options[question.correctAnswer]}</p>` : ''}
520
+ `;
521
+ performanceSummary.appendChild(summaryItem);
522
+ });
523
+ }
524
+
525
+ submitBtn.addEventListener('click', submitQuiz);
526
+
527
+ // Restart quiz
528
+ restartBtn.addEventListener('click', () => {
529
+ currentQuestion = 0;
530
+ score = 0;
531
+ userAnswers = Array(quizData.length).fill(null);
532
+ quizCompleted = false;
533
+ timeLeft = 20 * 60;
534
+
535
+ resultsSection.classList.add('hidden');
536
+ displayQuestion(currentQuestion);
537
+ startTimer();
538
+ });
539
+
540
+ // Initialize quiz
541
+ displayQuestion(currentQuestion);
542
+ startTimer();
543
+ </script>
544
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=methodya/quiz-theory" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
545
+ </html>