ACAK PERTANYAAN SLIDE & JAWAB PESANAN SECARA ACAK DI PPT QUIZ GAME

Dalam Modul Game Kuis PowerPoint Interaktif ini, kami akan mengacak urutan pertanyaan sehingga semua pertanyaan ditampilkan kepada siswa tanpa pengulangan. Kami mencapai ini dengan menghasilkan pesanan acak dan memindahkan slide ke posisi acak dalam rentang tertentu. 

Untuk menghasilkan urutan dari kotak-kotak jawaban pilihan ganda itu, kami mengganti nama empat kotak itu menjadi “a1, a2, a3, a4”. Dan kemudian, kita membuat array dan mengocoknya untuk mendapatkan semua 16 kombinasi “1,2,3,4”. Berdasarkan urutan urutan, kotak jawaban: “a1, a2, a3, a4” disusun dalam mode peragaan slide.

Sub RandomiseAnswerOrder()
Dim AnswerOrder() As Integer
ReDim AnswerOrder(3) '0 1 2 3 -> 4 compartments'

For i = 0 To 3
AnswerOrder(i) = i + 1
Next i

For i = 3 To 8

Randomize
For N = 0 To 3
J = Int(4 * Rnd) 'random number from 0 to 3

temp = AnswerOrder(N)
AnswerOrder(N) = AnswerOrder(J)
AnswerOrder(J) = temp

Next N

For j = 0 To 3

If AnswerOrder(j) = 1 Then
ActivePresentation.Slides(i).Shapes("a" & j+1).Top = 218
ActivePresentation.Slides(i).Shapes("a" & j+1).Left = 303
ElseIf AnswerOrder(j) = 2 Then
ActivePresentation.Slides(i).Shapes("a" & j+1).Top = 288
ActivePresentation.Slides(i).Shapes("a" & j+1).Left = 303
ElseIf AnswerOrder(j) = 3 Then
ActivePresentation.Slides(i).Shapes("a" & j+1).Top = 363
ActivePresentation.Slides(i).Shapes("a" & j+1).Left = 303
ElseIf AnswerOrder(j) = 4 Then
ActivePresentation.Slides(i).Shapes("a" & j+1).Top = 432
ActivePresentation.Slides(i).Shapes("a" & j+1).Left = 303
End If

Next j
Next i

End Sub 

Saya meletakkan kode yang digunakan untuk mengacak array di dalam lingkaran For i = 3 To 8: Atau, kotak-kotak jawaban dikocok dengan cara yang sama di semua slide.

Jika urutan jawabannya adalah: a3, a2, a1 dan a4 di slide pertama Anda, itu akan menjadi urutan yang sama untuk semua slide pertanyaan lainnya juga.

Namun, dengan mengacak array setiap kali untuk slide baru, kami dapat mengacak urutan jawaban dalam urutan berbeda yang baru.

Sub ShuffleSlides()
FirstSlide = 3
LastSlide = 8

Randomize
'generate random number between 2 to 7'
RSN = Int((LastSlide - FirstSlide + 1) * Rnd + FirstSlide)

For i = FirstSlide To LastSlide
ActivePresentation.Slides(i).MoveTo (RSN)
Next i
End Sub 

Pelajari lebih lanjut tentang pengocokan slide secara acak

Kami dapat mengubah nama bentuk di Microsoft PowerPoint dengan menggunakan VBA Macro berikut:

Sub ChangeNameOfShape()
For i = 3 To 8
ActivePresentation.Slides(i).Shapes("Rect 5").Name = "a1"
Next i
End Sub 

Kita dapat menemukan posisi bentuk jawaban dengan mencetak koordinat bentuk di Jendela Langsung kami. Alihkan itu dengan menekan Ctrl + G di Jendela Aplikasi Visual Basic Anda

Sub FindPositionOFAnswers()
Debug.Print ActivePresentation.Slides(3).Shapes("a1").Top 
Debug.Print ActivePresentation.Slides(3).Shapes("a2").Top 
Debug.Print ActivePresentation.Slides(3).Shapes("a3").Top 
Debug.Print ActivePresentation.Slides(3).Shapes("a4").Top 
End Sub 

Mengacak urutan 1,2,3,4 dengan mengocok Array dalam Perintah Acak

Array dapat menyimpan beberapa nilai dalam kompartemen yang berbeda. Berikut ini adalah contoh array yang kami gunakan untuk mengacak urutan jawaban dengan mengacak urutan “1,2,3,4”.

Kami menghasilkan nomor kompartemen acak dari 0 hingga 3 dan mengambil nilai kompartemen itu dan menempatkannya di kompartemen 0. Kami menghasilkan nomor kompartemen acak lain dan mengambil nilainya serta menempatkannya di kompartemen 1. Demikian pula, kami melakukan ini melalui Loop:

For N = 0 To 3 

Kami mentransfer nilai dari satu kompartemen ke yang lain dengan menyimpan nilai dalam variabel sementara yang disebut temp

temp = AnswerOrder(N)
AnswerOrder(N) = AnswerOrder(J)
AnswerOrder(J) = temp 

Menambahkan For-Loops untuk menetapkan posisi baru untuk bentuk jawaban

Dalam kode saya di atas di mana saya menetapkan posisi, i = 3 hingga 8 mengacu pada slide yang berisi pertanyaan. Sebuah loop dibuat untuk setiap nilai i, yaitu: 3, 4, 5, 6, 7, 8. 

j = 0 To 3 mengacu pada angka kompartemen (terminologi yang benar adalah pengindeksan) dari array. The kompartemen 0 berkorespondensi dengan bentuk a1 , kompartemen 1 berkorespondensi dengan bentuk a2 … dan seterusnya!

Jadi, kita merujuk pada bentuk sebagai  “a” & j + 1  karena hubungan yang sangat mungkin terlihat: 
Jika j = 0, bentuk = “a” & j + 1 = “a” & 0 + 1 = “a1” dan seterusnya…

Dengan demikian, Kode Makro PowerPoint VBA kami untuk mengocok perintah jawaban menjadi jauh lebih rapi. Anda juga dapat menggunakan trik serupa mengocok array untuk secara acak mengocok slide pertanyaan tanpa secara harfiah menyebabkan slide mengubah posisi mereka.

Sumber: https://pptvba.com/ppt-quiz-random-shuffle/

Leave a Reply

Your email address will not be published. Required fields are marked *