This is a read-only archive of the old Scratch 1.x Forums.
Try searching the current Scratch discussion forums.

#1 2008-04-10 02:32:27

Schneeweisschen
Scratcher
Registered: 2008-01-24
Posts: 2

Memory

HI Leute, ich möchte mit meiner Freundin ein Memoryspiel erstellen. Das Problem dabei ist, dass wir  nicht wissen wie wir programmieren, dass die "Karten" verschwinden wenn das richitge Paar angekickt wurde..........vielleicht könnt ihr uns ja helfen........
Lg Schneeweisschen

Offline

 

#2 2008-04-10 04:11:39

Jens
Scratcher
Registered: 2007-06-04
Posts: 1000+

Re: Memory

Hallo Schneeweisschen,

ein Memoryspiel in Scratch zu programmieren, ist nicht ganz einfach, weil es momentan in Scratch noch keine Arrays/Variablenlisten gibt. Es ist aber bestimmt machbar, und eine großartige Herausforderung. Ich glaube, der Schlüssel zum Erfolg liegt hierbei in der Anwendung von Variablen.

Mein Vorschlag wäre, jeder Karte zwei Kostüme (1 = Vorderseite, 2 = Rückseite) zuzuordnen.
Außerdem würde ich noch eine (globale) Variable erstellen, welche die Anzahl der jeweils aufgedeckten Karten zählt ("aufgedeckteKarten").

Der Vergleich könnte dann in einem Programm über den Fühler-Baustein "Kostüm-Nr. in Objekt" erfolgen.

Damit müsstet Ihr erstmal vorankommen. Wenn Ihr noch mehr Tipps braucht, fragt einfach nochmals nach!


Jens Mönig

Offline

 

#3 2008-04-12 13:32:03

goch
Scratcher
Registered: 2007-06-06
Posts: 21

Re: Memory

Angeregt durch Jens, habe ich ein einfaches Memoryspiel versucht. Der Einfachheit halber habe ich nur 6 Karten verwendet.

Für die 6 Karten erstellte ich 6 Objekte. Jedes Objekt besitzt 2 Kostüme ("Vorderseite" und "Rückseite").

Die globale Variable (gilt für alle Objekte) "aufgedeckte Karten" bekommt am Anfang den Wert "0" zugewiesen.
Alle Objekte zeigen am Beginn das Kostüm "Rueckseite".

Jedes Objekt bekommt jetzt folgendes Programm verpasst. Die Objekte "Karte1" und "Karte2" sind sind ein Bildpaar, zeigen also das gleiche Bild.
                   
        Wenn Karte1 angeklickt

            falls "aufgedeckte Karten < 2"        
                ziehe Kostüm Vorderseite an         
                ändere aufgedeckte Karten um 1


            falls "aufgedeckte Karten > 1" 
                warte 1 sek.                   
                setze aufgedeckte Karten auf 0
                                                                falls Kostüm Nr. =  Kostüm Nr. von Karte2
                    verstecke dich     
                sonst
                    ziehe Kostüm Rueckseite an 

    Wenn  beide Karten die gleichen sind, versteckt sich das Objekt.
    Wenn die Karten verschieden sind, wird wieder die Rückseite gezeigt.
    "Kostüm Nr. von .." ist unter "Fühlen" zu finden.

Am Anfang wäre es schön, wenn die Karten jedesmal in einer anderen Anordnung erscheinen würden.
Dazu erstellte ich für jedes Objekt eine Zufallsvariable: Zufall1, Zufall2 usw. bis Zufall6.

Das Programm von Karte1 schaut dann so aus:
       
        Wenn grüne Flagge angeklickt
            setze Zufall1 auf "Zufallszahl von 1 bis 6" 
            falls Zufall1 = 1
                gehe zu x: ... y: ...
                                                       :
                       :
            falls Zufall1 = 6
                gehe zu x: ... y: ...

Hier werden der Reihe nach die x- und y-Werte der 6 Objekte angegeben.
Dieses Skript ist in allen 6 Objekten das gleiche, nur mit einer anderen Zufallszahl.

Das Programm des nächsten Objektes soll ein wenig später starten und die Zufallszahl 2 ermitteln. Diese darf aber nicht die Zufallszahl 1 sein. Das ist das Skript von Karte2:

        Wenn grüne Flagge angeklickt
            warte 0,1 Sek.
            wiederhole bis "nicht zufall2 = zufall1"
                setze Zufall1 auf "Zufallszahl von 1 bis 6"
            falls Zufall2 = 1
                gehe zu x: ... y: ...
    usw.

Bei den folgenden Objekten habe ich die Sekunden immer um 0,1 erhoeht. Bei der dritten Karte sieht das Skript so aus:

    Wenn grüne Flagge angeklickt
        warte 0,2 Sek.
        wiederhole bis "nicht zufall3 = zufall1  und nicht zufall3 =zufall2 "
               setze Zufall1 auf "Zufallszahl von 1 bis 6"
        falls Zufall2 = 1
               gehe zu x: ... y: ...
    usw.

Bei meinem Projekt habe ich versucht, einige falsche Eingaben abzufangen. Ganz ist es mir allerdings auch nicht gelungen.




http://scratch.mit.edu/projects/goch/139594/download

Offline

 

#4 2008-04-12 14:42:08

Jens
Scratcher
Registered: 2007-06-04
Posts: 1000+

Re: Memory

Sehr schön und sehr lehrreich!


Jens Mönig

Offline

 

Board footer