Hallo Zusammen,
ich bin gerade dabei ein Memory Spiel zu schreiben und brauche ein wenig Hilfe. Ich bekomme es nicht hin, das man nicht mehr als 2 Karten anklicken kann ;/ Außerdem werden bei einem Fehlzug immer alle Karten resetet anstatt nur die die falsch waren (Hab keine Idee wie ich das Realisieren kann)
Dazu muss man sagen, das ich ein totaler Bob im Programmieren bin und das definitiv zu meinen Schwächen zählt. Hoffe mir kann jemand helfen.
- - - Aktualisiert - - -
Update: Ich habe das Problem, das nicht mehr als 2 Karten angeklickt werden können gelöst.
Hier ist das neue Skipt:
ich bin gerade dabei ein Memory Spiel zu schreiben und brauche ein wenig Hilfe. Ich bekomme es nicht hin, das man nicht mehr als 2 Karten anklicken kann ;/ Außerdem werden bei einem Fehlzug immer alle Karten resetet anstatt nur die die falsch waren (Hab keine Idee wie ich das Realisieren kann)
Dazu muss man sagen, das ich ein totaler Bob im Programmieren bin und das definitiv zu meinen Schwächen zählt. Hoffe mir kann jemand helfen.
HTML:
<!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
<title>Memory9.0</title>
<style type="text/css">
#Spielfeld {
width: 300px;
height: 300px;
margin: auto;
background-color: yellow;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
.Zellen {
width: 50px;
height: 50px;
}
table {
border: 1px solid;
border-spacing: 10px 10px;
border-collapse: separate;table-layout: fixed;
height: 300px;
width: 300px;
text-align: center;
border-collapse: separate;
}
</style>
<script type="text/javascript" language="JavaScript">
var array = ['Server','Switch','HDD','SSD','SSHD','KVM','Server','Switch','HDD','SSD','SSHD','KVM'] //Enthält Werte für die einzelnen Karten
var werte = []; //Leerer Array in dem später die zu vergleichenden Karten stehen
var num = 0; //Zahl für den Counter(Max 2 angeklickte karten)
var status = 1; //Status der übergeben wird, um die flip funktion zu disabln
function shuffle(array) { //Mischt den Array durch
var m = array.length, t, i;
// While there remain elements to shuffle…
while (m) {
// Pick a remaining element…
i = Math.floor(Math.random() * m--);
// And swap it with the current element.
t = array[m];
array[m] = array[i];
array[i] = t;
}
return array;
}
function reset() { //Flippt alle umgedrehten Karten wieder zurück
document.getElementById("1").innerHTML = ("Klick!");
document.getElementById("2").innerHTML = ("Klick!");
document.getElementById("3").innerHTML = ("Klick!");
document.getElementById("4").innerHTML = ("Klick!");
document.getElementById("5").innerHTML = ("Klick!");
document.getElementById("6").innerHTML = ("Klick!");
document.getElementById("7").innerHTML = ("Klick!");
document.getElementById("8").innerHTML = ("Klick!");
document.getElementById("9").innerHTML = ("Klick!");
document.getElementById("10").innerHTML = ("Klick!");
document.getElementById("11").innerHTML = ("Klick!");
document.getElementById("12").innerHTML = ("Klick!");
num = 0;
werte=[];
}
</script>
</head>
<body>
<script type="text/javascript" language="JavaScript">
shuffle(array);
</script>
<div id="Spielfeld">
<table border="1">
<tr>
<td class="Zellen" id="1"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="2"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="3"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="4"><script type="text/javascript">document.write("Klick!");</script></td>
</tr>
<tr>
<td class="Zellen" id="5"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="6"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="7"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="8"><script type="text/javascript">document.write("Klick!");</script></td>
</tr>
<tr>
<td class="Zellen" id="9"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="10"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="11"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="12"><script type="text/javascript">document.write("Klick!");</script></td>
</tr>
</table>
<input type="button" onclick="reset()" value="ResetAll"/>
</div>
<script type="text/javascript" language="JavaScript">
function onclick() { //Funktion, um die flip funktion aufzurufen und die entsprechend angeklickten Felder definiert
document.getElementById("1").onclick = function() {flip(1);count()};
document.getElementById("2").onclick = function() {flip(2);count()};
document.getElementById("3").onclick = function() {flip(3);count()};
document.getElementById("4").onclick = function() {flip(4);count()};
document.getElementById("5").onclick = function() {flip(5);count()};
document.getElementById("6").onclick = function() {flip(6);count()};
document.getElementById("7").onclick = function() {flip(7);count()};
document.getElementById("8").onclick = function() {flip(8);count()};
document.getElementById("9").onclick = function() {flip(9);count()};
document.getElementById("10").onclick = function() {flip(10);count()};
document.getElementById("11").onclick = function() {flip(11);count()};
document.getElementById("12").onclick = function() {flip(12);count()};
}
function count() { //Zählt wie oft geklickt wurde, setzt Status um
num++;
if (num > 2) {
alert("Nicht mehr als 2 anklicken, Programm status: crashed!");
status =0;
//document.getElementByName("onclick").function.disabled;
}
}
function flip(id) { //Dreht die angeklickten Karten um und bereitet den leeren Array zum vergleich vor
if (status ==1) {
document.getElementById(id).innerHTML = array[id-1];
werte.push(array[id-1]);
setTimeout(function(){compare(); }, 1000);
}
}
function compare() { //Vergleicht den Inhalt des Arrays miteinander und entscheidet dann, ob resetet wird oder nicht
if (werte.length ==2) {
if (werte[0]==werte[1]) {
num = 0;
} else {
num = 0;
reset();
}
werte=[];
}
}
//setTimeout(function(){ alert("Sind nicht gleich"); }, 3000);
//compare(array, werte);
onclick();
</script>
</body>
</html>
- - - Aktualisiert - - -
Update: Ich habe das Problem, das nicht mehr als 2 Karten angeklickt werden können gelöst.
Hier ist das neue Skipt:
HTML:
<!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
<title>Memory9.0</title>
<style type="text/css">
#Spielfeld {
width: 300px;
height: 300px;
margin: auto;
background-color: yellow;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
.Zellen {
width: 50px;
height: 50px;
}
table {
border: 1px solid;
border-spacing: 10px 10px;
border-collapse: separate;table-layout: fixed;
height: 300px;
width: 300px;
text-align: center;
border-collapse: separate;
}
</style>
<script type="text/javascript" language="JavaScript">
var array = ['Server','Switch','HDD','SSD','SSHD','KVM','Server','Switch','HDD','SSD','SSHD','KVM'] //Enthält Werte für die einzelnen Karten
var werte = []; //Leerer Array in dem später die zu vergleichenden Karten stehen
var num = 0; //Zahl für den Counter(Max 2 angeklickte karten)
var status = 1; //Status der übergeben wird, um die flip funktion zu disabln
function shuffle(array) { //Mischt den Array durch
var m = array.length, t, i;
// While there remain elements to shuffle…
while (m) {
// Pick a remaining element…
i = Math.floor(Math.random() * m--);
// And swap it with the current element.
t = array[m];
array[m] = array[i];
array[i] = t;
}
return array;
}
function reset() { //Flippt alle umgedrehten Karten wieder zurück
document.getElementById("1").innerHTML = ("Klick!");
document.getElementById("2").innerHTML = ("Klick!");
document.getElementById("3").innerHTML = ("Klick!");
document.getElementById("4").innerHTML = ("Klick!");
document.getElementById("5").innerHTML = ("Klick!");
document.getElementById("6").innerHTML = ("Klick!");
document.getElementById("7").innerHTML = ("Klick!");
document.getElementById("8").innerHTML = ("Klick!");
document.getElementById("9").innerHTML = ("Klick!");
document.getElementById("10").innerHTML = ("Klick!");
document.getElementById("11").innerHTML = ("Klick!");
document.getElementById("12").innerHTML = ("Klick!");
num = 0;
werte=[];
}
</script>
</head>
<body>
<script type="text/javascript" language="JavaScript">
shuffle(array);
</script>
<div id="Spielfeld">
<table border="1">
<tr>
<td class="Zellen" id="1"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="2"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="3"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="4"><script type="text/javascript">document.write("Klick!");</script></td>
</tr>
<tr>
<td class="Zellen" id="5"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="6"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="7"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="8"><script type="text/javascript">document.write("Klick!");</script></td>
</tr>
<tr>
<td class="Zellen" id="9"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="10"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="11"><script type="text/javascript">document.write("Klick!");</script></td>
<td class="Zellen" id="12"><script type="text/javascript">document.write("Klick!");</script></td>
</tr>
</table>
<input type="button" onclick="reset()" value="ResetAll"/>
</div>
<script type="text/javascript" language="JavaScript">
function onclick() { //Funktion, um die flip funktion aufzurufen und die entsprechend angeklickten Felder definiert
document.getElementById("1").onclick = function() {flip(1)};
document.getElementById("2").onclick = function() {flip(2)};
document.getElementById("3").onclick = function() {flip(3)};
document.getElementById("4").onclick = function() {flip(4)};
document.getElementById("5").onclick = function() {flip(5)};
document.getElementById("6").onclick = function() {flip(6)};
document.getElementById("7").onclick = function() {flip(7)};
document.getElementById("8").onclick = function() {flip(8)};
document.getElementById("9").onclick = function() {flip(9)};
document.getElementById("10").onclick = function() {flip(10)};
document.getElementById("11").onclick = function() {flip(11)};
document.getElementById("12").onclick = function() {flip(12)};
}
//function count() { //Zählt wie oft geklickt wurde, setzt Status um
//
// num++;
// if (num > 2) {
// alert("Nicht mehr als 2 anklicken, Programm status: crashed!");
// status =0;
// //document.getElementByName("onclick").function.disabled;
// }
//}
function flip(id) { //Dreht die angeklickten Karten um und bereitet den leeren Array zum vergleich vor
num++
if (num > 2) {
alert("Nicht mehr als 2 anklicken, Programm status: crashed!");
} else {
document.getElementById(id).innerHTML = array[id-1];
werte.push(array[id-1]);
setTimeout(function(){compare(); }, 1000);
}
}
function compare() { //Vergleicht den Inhalt des Arrays miteinander und entscheidet dann, ob resetet wird oder nicht
if (werte.length ==2) {
if (werte[0]==werte[1]) {
num = 0;
} else {
num = 0;
reset();
}
werte=[];
}
}
//setTimeout(function(){ alert("Sind nicht gleich"); }, 3000);
//compare(array, werte);
onclick();
</script>
</body>
</html>
Zuletzt bearbeitet von einem Moderator: