Miejsce, w którym nauczyciele i przedsiębiorcy mogą wymieniać się informacjami,  aktualizować swoją wiedzę i konsultować problemy. Dzięki przepływowi wiedzy szkoły i przedsiębiorcy zdobywają wiedzę na temat swoich wzajemnych oczekiwań. Przedsiębiorcy dostarczają tu informacji o swoich potrzebach dotyczących kompetencji przyszłych kadr.

Zapomniałeś hasła?
Szukanie zaawansowane

— Zakres szukania —




— Match —





— Opcje Forum —





Minimalna ilość znaków wyszukiwania to 3. Maksymalna to 84

sp_Feed Kanał RSS Tematu sp_TopicIcon
Zadanie - kółko i krzyżyk
6 grudnia 2013
20:11
Avatar
dbak
Member
Members
Liczba Postów: 4
Data Rejestracji:
30 listopada 2013
sp_UserOfflineSmall Offline

Poniżej zamieszczam kod do zadania. Zadanie zawiera trzy pliki – index.html, style.css oraz tictactoe.js. Waszym zadaniem jest uzupełnienie pliku tictactoe.js tak, aby gra działała. Kod trzeba skopiować i zapisać w odpowiednich plikach tekstowych.

index.html

<!DOCTYPE html>
<html>
<head>
<title>Gra kółĸo i krzyżyk</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style.css" />
<script type="text/javascript" src="tictactoe.js"></script>
</head>
<body onload="start();">
<table>
<tr>
<td x="0" y="0"></td>
<td x="1" y="0"></td>
<td x="2" y="0"></td>
</tr>
<tr>
<td x="0" y="1"></td>
<td x="1" y="1"></td>
<td x="2" y="1"></td>
</tr>
<tr>
<td x="0" y="2"></td>
<td x="1" y="2"></td>
<td x="2" y="2"></td>
</tr>
</table>
</body>
</html>

style.css

td { width:100px; height:100px; border: 1px solid #000; margin:0; padding:0; font-size: 30px; text-align: center; vertical-align: middle; color:#000;}

tictactoe.js

/*
* zadanie: napisać grę kółko i krzyżyk. Można dostarczyć dokument html
*
* poruszane zagadnienia ze slajdów:
* funkcje, tablice, pętle, Document Object Model, zdarzenia
*/

// Tablica 2 wymiarowa reprezentująca planszę do gry
var result = new Array(new Array(3),new Array(3),new Array(3));

// Zmiana przechowująca oznaczenie gracza, który ma wykonać ruch (rozpoczynamy od kółka)
var player = ‚O’;

function start() {

}

// Sprawdzenie czy wszystkie pola są już zajęte, jeżeli tak to remin.
// Wcześniej sprawdzaliśmy czy ktoś wygrał, więc nie potrzeba nam dodatkowego sprawdzenia
// True oznacza, że wszystkie pola są zajęte (więc remis), false że są jeszcze wolne pola
function draw() {

}

// Sprawdzenie czy gra została zakończona zwycieństwem zadanego gracza (wywoływane po ruchu gracza)
// True oznacza że zadany gracz wygrał, false że gra jeszcze jest nie rozstrzygnięta lub jest remis
function win(player) {

}

Życzę powodzenia,
Dawid Bąk

Linux is like a wigwam: no windows, no gates, apache inside !

13 grudnia 2013
17:58
w.tyziniec
New Member
Members
Liczba Postów: 1
Data Rejestracji:
19 listopada 2013
sp_UserOfflineSmall Offline

Rozwiązanie zadania wysłane na email.

16 grudnia 2013
22:44
Avatar
dbak
Member
Members
Liczba Postów: 4
Data Rejestracji:
30 listopada 2013
sp_UserOfflineSmall Offline

Zamieszczam przykładowe rozwiązanie. Proszę porównać ze swoimi.

// Tablica 2 wymiarowa reprezentująca planszę do gry
var result = new Array(new Array(3),new Array(3),new Array(3));

// Zmiana przechowująca oznaczenie gracza, który ma wykonać ruch (rozpoczynamy od kółka)
var player = ‚O’;

function start() {

// Pobieramy wszystkie komórki tabeli (td)
var tds = document.getElementsByTagName(‚td’);

// Iterujemy po tablicy z komórkami tabeli
for (var i=0; i< tds.length; i++) {

// Dodajemy "słuchacza" na zdarzenie kliknięcia myszką
tds[i].addEventListener(‚click’,function(e){

// Pobieramy atrybuty x i y, aby zidentyfikować pole na "planszy"
var x = this.getAttribute(‚x’);
var y = this.getAttribute(‚y’);

// Jeżeli pole nie było jeszcze wypełnione to je wypełniamy i sprawdzamy czy gra się już zakończyła (wygrana gracza lub remisem)
if ( !result[x][y] ) {
result[x][y] = player;
this.innerText = player;
if ( win(player) ) {
alert(‚wygrał gracz: ‚ + player);
return;
} else if ( draw() ) {
alert(‚remis’);
return;
}

// Przełączamy gracza
if ( player === ‚O’) {
player = ‚X’;
} else {
player = ‚O’;
}
} else {
// Informujemy gracza o niedozowolonym ruchu, w momencie gdy dane pole jest już wypełnione
alert(‚Niedozwolony ruch’);
}
}, false);
}
}

// Sprawdzenie czy wszystkie pola są już zajęte, jeżeli tak to remin.
// Wcześniej sprawdzaliśmy czy ktoś wygrał, więc nie potrzeba nam dodatkowego sprawdzenia
// True oznacza, że wszystkie pola są zajęte (więc remis), false że są jeszcze wolne pola
function draw() {
for(var i = 0; i < 3; i++) {
for(var j = 0; j < 3; j++) {
if ( !result[i][j] )
return false;
}
}
return true;
}

// Sprawdzenie czy gra została zakończona zwycieństwem zadanego gracza (wywoływane po ruchu gracza)
// True oznacza że zadany gracz wygrał, false że gra jeszcze jest nie rozstrzygnietą lub jest remis
function win(player) {

// sprawdzenie "skosów"
if((result[0][0] === player) && (result[1][1] === player) && (result[2][2] === player)) return true;
if((result[0][2] === player) && (result[1][1] === player) && (result[2][0] === player)) return true;

for(var i = 0; i < 3; i++)
{
// Sprawdzenie wierszy
if((result[i][0] === player) && (result[i][1] === player) && (result[i][2] === player)) return true;

// Sprawdzenie kolumn
if((result[0][i] === player) && (result[1][i] === player) && (result[2][i] === player)) return true;
}
return false;
}

Linux is like a wigwam: no windows, no gates, apache inside !

Strefa czasowa forum: Europe/Warsaw

Najwięcej użytkowników online: 22

Obecnie online:
1 Gość(i)

Obecnie przeglądają tę stronę:
1 Gość(i)

Najaktywniejsi na forum:

S_Pawlowski: 8

EwaG: 7

Worie: 4

dbak: 4

cichon: 3

swiatloplis: 2

overkiller: 2

jackflower: 2

w.tyziniec: 1

Jolanta Balicka: 1

Statystyki użytkowników:

Posty gości: 4

Użytkownicy: 35

Moderatorzy: 0

Administratorzy: 1

Statystyki forum:

Grupy: 1

Fora: 7

Tematy:19

Posty: 38

Najnowsi użytkownicy:

Administratorzy: kkeller: 2

Podziel się

FacebookTwitterGoogle PlusMore...