2016-03-19 28 views
7

Sto provando a fare un powerpoint di pratica matematica in cui agli studenti vengono presentati problemi di aggiunta casuale usando i numeri 1 - 20. Ho lavorato attraverso tutorial di David Marcovtiz (e altri) e stavo usando il suo codice come un punto di partenza. Poiché il mio pubblico è composto da giovani studenti, vorrei che i problemi di matematica non si trovassero in una finestra di messaggio, ma in qualcosa di simile a caselle di testo o forme che posso personalizzare e rendere grande e visivamente attraente per i giovani studenti.Esecuzione di calcoli con numeri casuali

Quindi, quello che sto volendo fare ... In una dimostrazione di PowerPoint

  1. studenti possono fare clic su un pulsante di 'iniziare' che li porta alla diapositiva successiva
  2. Diapositiva successiva genera automaticamente 2 numeri casuali che lo studente deve sommare.
  3. Lo studente inserisce la risposta
  4. Se la risposta è corretta - Vorrei che qualcosa indicasse che la risposta era corretta ma non qualcosa su cui devono cliccare per chiudere. Idealmente, una piccola stella lampeggia nell'angolo poi scompare
  5. Se la risposta non è corretta, un messaggio o un'immagine lampeggia e quindi scompare.

  6. Un nuovo problema di addizione viene generato automaticamente/casualmente Vorrei impostare il numero di problemi di aggiunta ad es. 20, quindi spostare la diapositiva su una diapositiva di punteggio che mostra il loro punteggio nelle immagini, ad es. una stella per ogni risposta corretta.

Aggiornamento: utilizzando ActiveX caselle di testo:

ho avuto successo con le caselle di testo ActiveX di essere in grado di dimostrare in modo casuale due numeri e li hanno moltiplicano e mostrare la risposta in un terzo testo ActiveX scatola, che ho nascosto dalla diapositiva. Ho usato un quarto come una casella di input per gli studenti per digitare la loro risposta. Se questo è uguale alla risposta nella terza casella, posso mostrare una stella e cancellare le caselle, quindi passare alla diapositiva successiva. Se non è la stessa cosa, posso andare a mostrare un'altra immagine, quindi passare alla diapositiva successiva. (Originariamente volevo che la diapositiva si aggiornasse e usassi una diapositiva per porre 20 domande, ma trovavo difficile.)

Al momento, questo richiede di fare clic su tre pulsanti di comando.

Quello che sono riuscito finora (so che sembrerà abbastanza triste per voi e forse instabile, ma un risultato importante per me e per il 'bit' stanno lavorando) che posso gestirlo per la moltiplicazione, ma quando ho + i valori es 9 + 3, ottengo 93

Private Sub CommandButton1_Click() 
    TextBox1.Value = Int(10 * Rnd) 
    TextBox2.Value = Int(10 * Rnd) 
    TextBox3.Value = TextBox1.Value * TextBox2.Value 
End Sub 

Private Sub CommandButton2_Click() 
    If TextBox4.Value = TextBox3.Value Then 
     ActivePresentation.Slides("problem").Shapes("badge5").Visible = True 
     ActivePresentation.Slides("score").Shapes("badge5").Visible = True 
    Else 
     ActivePresentation.Slides("problem" _).Shapes("incorrect").Visible = True 

     TextBox1.Value = "" 
     TextBox2.Value = "" 
     TextBox3.Value = "" 
     TextBox4.Value = "" 
    End If 
End Sub 

Private Sub CommandButton3_Click() 
    SlideShowWindows(1).View.Next 
End Sub 

Che cosa ho bisogno

Vorrei i numeri casuali a pulsante di comando 1 per attivare automaticamente.

Vorrei unire i pulsanti di comando 2 e 3 e includere un tempo di attesa dopo che la stella o le forme errate compaiono prima di passare alla diapositiva successiva ma il codice che ho trovato applica il tempo di attesa all'intera sequenza come sono non sono sicuro di come includerlo.

Private Sub Time_Click() 
    iTime = 2# 
    Start = Timer 

    While Timer < Start + iTime 
    Wend 

    With SlideShowWindows(1).View.Next 
    End With 
End Sub 

utilizzando forme: io preferirei lavorare con caselle di testo ordinari o forme ma ... sono riuscito a produrre numeri casuali nelle forme ma non sono stati in grado di moltiplicare loro e gli studenti digitare in una casella di testo activex che determina se è ancora corretto o non corretto. Penso che il problema sia nel cercare di usare entrambe le forme e una casella di testo activex.

Vorrei utilizzare forme perché mi piace creare diapositive master che possono essere selezionati utilizzando il seguente codice - anche se questo non è una garanzia di insuccesso.

Sub background() 
    ActivePresentation.Slides.Range(Array(2, 3, 4, 5)).CustomLayout_ 
    = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(6) 
End Sub 

Sento che questo è qualcosa che altri educatori potrebbero utilizzare e sono felice di inviare il mio spettacolo finito, se qualcuno è disposto e in grado di assistere con la codifica. Apprezzo molto la tolleranza e la pazienza di collaboratori dimostrato di persone come me che hanno saltato in testa prima, eccitato e dando un andare, ma in difficoltà.

+0

"ma quando ho + i valori ad esempio 9 + 3, ottengo 93" ... perché il. La proprietà Value di una casella di testo restituisce una stringa. Utilizzare Val (Textbox1.value) + Val (TextBox2.Value), invece. Assicurati di intercettare eventuali errori che risultano o aggiungi codice all'evento Modifica della casella di testo per rimuovere tutti i caratteri non interi. –

+0

Grazie Steve. Aggiungendo bene ora. – Nicpr

risposta

1

Così, per abbattere i pezzi richiesti nella sezione "What I Need", Ho diviso la mia risposta in due sezioni:

"Vorrei i numeri casuali a pulsante di comando 1 per attivare automaticamente ".

Suppongo che per "automaticamente" si intenda che la diapositiva "successiva" venga popolata automaticamente con i valori dopo che l'utente ha risposto alla domanda nella diapositiva precedente. Per realizzare questa funzionalità, che chiamerei il metodo che il CommandButton1 chiama attualmente, dopo tutta la logica nel CommandButton2 è stato eseguito.

"Vorrei unire pulsante di comando 2 e 3 e includere un tempo di attesa dopo che la stella o forme non corrette appaiono prima di passare alla diapositiva successiva ..."

Vorrei semplicemente combinare il codice di le due funzioni con una funzione di attesa tra i due bit di codice. Non sono sicuro di dove avete trovato il codice che avete inviato per la funzione "Timer_Click", non credo che funzionerebbe come attualmente collocate. Vorrei in genere utilizzare il metodo di "attendere" di cui parla in questo answer.

Il risultato, dopo aver cambiato il codice per i due nuovi requisiti sarebbe qualcosa di simile:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Public Sub CommandButton2_Click() 
    'Command Button 2(code) 
    If TextBox4.value = TextBox3.value Then 
     ActivePresentation.slides("problem").Shapes("badge5").visible = True 
     ActivePresentation.slides("score").Shapes("badge5").visible = True 
    Else 
     ActivePresentation.slides("problem").Shapes("incorrect").visible = True 

     TextBox1.value = "" 
     TextBox2.value = "" 
     TextBox3.value = "" 
     TextBox4.value = "" 
    End If 

    'Wait code here(1000ms) 
    Sleep 1000 

    'Command Button 3(code) 
    SlideShowWindows(1).View.Next 

    'Call the command for CommandButton1, 
    'this will "automatically" populate the slide with new values 
    CommandButton1_Click 
End Sub