Показать сообщение отдельно

  #293  
Старый 10.02.2008, 01:24
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме:
6023777

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

Крестики-нолики. Код получился на 10 кб (в 2 раза больше покера).
PHP код:
<?php
    session_start
();
    echo(
'<title>Крестки-нолики</title>');
    if(!
$_SESSION['wins'] || $_SERVER['QUERY_STRING'] == 'clear_score'){$_SESSION['wins'] = 0;}
    if(!
$_SESSION['lose'] || $_SERVER['QUERY_STRING'] == 'clear_score'){$_SESSION['lose'] = 0;}
    if(!
$_SESSION['x']) {
        
$_SESSION['x'] = array();
    }
    if(!
$_SESSION['o']) {
        
$_SESSION['o'] = array();
    }
    function 
session_kill() {
        unset(
$_SESSION['x']);
        unset(
$_SESSION['o']);
    }
    function 
is_won($array) {
        if((
in_array(1$array) && in_array(2$array) && in_array(3$array)) || (in_array(1$array) && in_array(4$array) && in_array(7$array)) || (in_array(1$array) && in_array(5$array) && in_array(9$array)) || (in_array(2$array) && in_array(5$array) && in_array(8$array)) || (in_array(3$array) && in_array(6$array) && in_array(9$array)) || (in_array(3$array) && in_array(5$array) && in_array(7$array)) || (in_array(4$array) && in_array(5$array) && in_array(6$array)) || (in_array(7$array) && in_array(8$array) && in_array(9$array))) {
            return 
true;
        } else {
            return 
false;
        }
    }
    if(
$_GET['place'] && !in_array($_GET['place'], array_merge($_SESSION['x'], $_SESSION['o'])) && $_GET['place'] < 10 && $_GET['place'] > 0) {
        
$_SESSION['x'][] = $_GET['place'];
        function 
rand_place() {
            if(!
in_array(5$_SESSION['x']) && !in_array(5$_SESSION['o'])) {
                return 
5;
            } else {
                
$place rand(1,9);
                if(!
in_array($place$_SESSION['x']) && !in_array($place$_SESSION['o'])) {
                    return 
$place;
                } else {
                    return 
rand_place();
                }
            }
        }
        if(
count(array_merge($_SESSION['x'], $_SESSION['o'])) != && !is_won($_SESSION['x'])) {
            if(((
in_array(2$_SESSION['o']) && in_array(3$_SESSION['o'])) || (in_array(4$_SESSION['o']) && in_array(7$_SESSION['o'])) || (in_array(5$_SESSION['o']) && in_array(9$_SESSION['o']))) && !in_array(1$_SESSION['o']) && !in_array(1$_SESSION['x'])) {
                
$_SESSION['o'][] = 1;
            } elseif(((
in_array(1$_SESSION['o']) && in_array(3$_SESSION['o'])) || (in_array(5$_SESSION['o']) && in_array(8$_SESSION['o']))) && !in_array(2$_SESSION['o']) && !in_array(2$_SESSION['x'])) {
                
$_SESSION['o'][] = 2;
            } elseif(((
in_array(1$_SESSION['o']) && in_array(2$_SESSION['o'])) || (in_array(6$_SESSION['o']) && in_array(9$_SESSION['o'])) || (in_array(5$_SESSION['o']) && in_array(7$_SESSION['o']))) && !in_array(3$_SESSION['o']) && !in_array(3$_SESSION['x'])) {
                
$_SESSION['o'][] = 3;
            } elseif(((
in_array(5$_SESSION['o']) && in_array(6$_SESSION['o'])) || (in_array(1$_SESSION['o']) && in_array(7$_SESSION['o']))) && !in_array(4$_SESSION['o']) && !in_array(4$_SESSION['x'])) {
                
$_SESSION['o'][] = 4;
            } elseif(((
in_array(4$_SESSION['o']) && in_array(6$_SESSION['o'])) || (in_array(2$_SESSION['o']) && in_array(8$_SESSION['o'])) || (in_array(1$_SESSION['o']) && in_array(9$_SESSION['o'])) || (in_array(3$_SESSION['o']) && in_array(7$_SESSION['o']))) && !in_array(5$_SESSION['o']) && !in_array(5$_SESSION['x'])) {
                
$_SESSION['o'][] = 5;
            } elseif(((
in_array(4$_SESSION['o']) && in_array(5$_SESSION['o'])) || (in_array(3$_SESSION['o']) && in_array(9$_SESSION['o']))) && !in_array(6$_SESSION['o']) && !in_array(6$_SESSION['x'])) {
                
$_SESSION['o'][] = 6;
            } elseif(((
in_array(8$_SESSION['o']) && in_array(9$_SESSION['o'])) || (in_array(1$_SESSION['o']) && in_array(4$_SESSION['o'])) || (in_array(3$_SESSION['o']) && in_array(5$_SESSION['o']))) && !in_array(7$_SESSION['o']) && !in_array(7$_SESSION['x'])) {
                
$_SESSION['o'][] = 7;
            } elseif(((
in_array(7$_SESSION['o']) && in_array(9$_SESSION['o'])) || (in_array(2$_SESSION['o']) && in_array(5$_SESSION['o']))) && !in_array(8$_SESSION['o']) && !in_array(8$_SESSION['x'])) {
                
$_SESSION['o'][] = 8;
            } elseif(((
in_array(7$_SESSION['o']) && in_array(8$_SESSION['o'])) || (in_array(3$_SESSION['o']) && in_array(6$_SESSION['o'])) || (in_array(1$_SESSION['o']) && in_array(5$_SESSION['o']))) && !in_array(9$_SESSION['o']) && !in_array(9$_SESSION['x'])) {
                
$_SESSION['o'][] = 9;
            } elseif(((
in_array(2$_SESSION['x']) && in_array(3$_SESSION['x'])) || (in_array(4$_SESSION['x']) && in_array(7$_SESSION['x'])) || (in_array(5$_SESSION['x']) && in_array(9$_SESSION['x']))) && !in_array(1$_SESSION['x']) && !in_array(1$_SESSION['o'])) {
                
$_SESSION['o'][] = 1;
            } elseif(((
in_array(1$_SESSION['x']) && in_array(3$_SESSION['x'])) || (in_array(5$_SESSION['x']) && in_array(8$_SESSION['x']))) && !in_array(2$_SESSION['x']) && !in_array(2$_SESSION['o'])) {
                
$_SESSION['o'][] = 2;
            } elseif(((
in_array(1$_SESSION['x']) && in_array(2$_SESSION['x'])) || (in_array(6$_SESSION['x']) && in_array(9$_SESSION['x'])) || (in_array(5$_SESSION['x']) && in_array(7$_SESSION['x']))) && !in_array(3$_SESSION['x']) && !in_array(3$_SESSION['o'])) {
                
$_SESSION['o'][] = 3;
            } elseif(((
in_array(5$_SESSION['x']) && in_array(6$_SESSION['x'])) || (in_array(1$_SESSION['x']) && in_array(7$_SESSION['x']))) && !in_array(4$_SESSION['x']) && !in_array(4$_SESSION['o'])) {
                
$_SESSION['o'][] = 4;
            } elseif(((
in_array(4$_SESSION['x']) && in_array(6$_SESSION['x'])) || (in_array(2$_SESSION['x']) && in_array(8$_SESSION['x'])) || (in_array(1$_SESSION['x']) && in_array(9$_SESSION['x'])) || (in_array(3$_SESSION['x']) && in_array(7$_SESSION['x']))) && !in_array(5$_SESSION['x']) && !in_array(5$_SESSION['o'])) {
                
$_SESSION['o'][] = 5;
            } elseif(((
in_array(4$_SESSION['x']) && in_array(5$_SESSION['x'])) || (in_array(3$_SESSION['x']) && in_array(9$_SESSION['x']))) && !in_array(6$_SESSION['x']) && !in_array(6$_SESSION['o'])) {
                
$_SESSION['o'][] = 6;
            } elseif(((
in_array(8$_SESSION['x']) && in_array(9$_SESSION['x'])) || (in_array(1$_SESSION['x']) && in_array(4$_SESSION['x'])) || (in_array(3$_SESSION['x']) && in_array(5$_SESSION['x']))) && !in_array(7$_SESSION['x']) && !in_array(7$_SESSION['o'])) {
                
$_SESSION['o'][] = 7;
            } elseif(((
in_array(7$_SESSION['x']) && in_array(9$_SESSION['x'])) || (in_array(2$_SESSION['x']) && in_array(5$_SESSION['x']))) && !in_array(8$_SESSION['x']) && !in_array(8$_SESSION['o'])) {
                
$_SESSION['o'][] = 8;
            } elseif(((
in_array(7$_SESSION['x']) && in_array(8$_SESSION['x'])) || (in_array(3$_SESSION['x']) && in_array(6$_SESSION['x'])) || (in_array(1$_SESSION['x']) && in_array(5$_SESSION['x']))) && !in_array(9$_SESSION['x']) && !in_array(9$_SESSION['o'])) {
                
$_SESSION['o'][] = 9;
            } else {
                
$_SESSION['o'][] = rand_place();
            }
        }
    }
    if(!
is_won($_SESSION['x']) && !is_won($_SESSION['o']) && count(array_merge($_SESSION['x'], $_SESSION['o'])) != 9) {
?>
<script>
function add(element) {
    if(element.innerHTML != 'O' && element.innerHTML != 'X') {
        document.location.href = '<?php echo($_SERVER['PHP_SELF']); ?>?place='+element.id;
    } else {
        alert('Здесь ставить нельзя');
    }
}
function over(element, str) {
    if(element.innerHTML != 'O' && element.innerHTML != 'X') {
        element.innerHTML = ' '+str+' ';
    }
}
</script>
<?php
    
}
?>
<table style="font-size: 40px; text-align: center; cursor: pointer;">
<tr>
<td style="width: 50px; height: 40px; border-right: 1px solid black;" onclick="add(this)" onmouseover="over(this, 'X')" onmouseout="over(this, '&nbsp;')" id="1"><?php if(in_array(1$_SESSION['x'])) { echo('X'); } elseif(in_array(1$_SESSION['o'])) { echo('O'); } else { echo('&nbsp;'); } ?></td>
<td style="width: 50px; height: 40px; border-right: 1px solid black;" onclick="add(this)" onmouseover="over(this, 'X')" onmouseout="over(this, '&nbsp;')" id="2"><?php if(in_array(2$_SESSION['x'])) { echo('X'); } elseif(in_array(2$_SESSION['o'])) { echo('O'); } else { echo('&nbsp;'); } ?></td>
<td style="width: 50px; height: 40px;" onclick="add(this)" onmouseover="over(this, 'X')" onmouseout="over(this, '&nbsp;')" id="3"><?php if(in_array(3$_SESSION['x'])) { echo('X'); } elseif(in_array(3$_SESSION['o'])) { echo('O'); } else { echo('&nbsp;'); } ?></td>
</tr><tr>
<td style="width: 50px; height: 40px; border-top: 1px solid black; border-bottom: 1px solid black; border-right: 1px solid black;" onclick="add(this)" onmouseover="over(this, 'X')" onmouseout="over(this, '&nbsp;')" id="4"><?php if(in_array(4$_SESSION['x'])) { echo('X'); } elseif(in_array(4$_SESSION['o'])) { echo('O'); } else { echo('&nbsp;'); } ?></td>
<td style="width: 50px; height: 40px; border-top: 1px solid black; border-bottom: 1px solid black; border-right: 1px solid black;" onclick="add(this)" onmouseover="over(this, 'X')" onmouseout="over(this, '&nbsp;')" id="5"><?php if(in_array(5$_SESSION['x'])) { echo('X'); } elseif(in_array(5$_SESSION['o'])) { echo('O'); } else { echo('&nbsp;'); } ?></td>
<td style="width: 50px; height: 40px; border-top: 1px solid black; border-bottom: 1px solid black;" onclick="add(this)" onmouseover="over(this, 'X')" onmouseout="over(this, '&nbsp;')" id="6"><?php if(in_array(6$_SESSION['x'])) { echo('X'); } elseif(in_array(6$_SESSION['o'])) { echo('O'); } else { echo('&nbsp;'); } ?></td>
</tr><tr>
<td style="width: 50px; height: 40px; border-right: 1px solid black;" onclick="add(this)" onmouseover="over(this, 'X')" onmouseout="over(this, '&nbsp;')" id="7"><?php if(in_array(7$_SESSION['x'])) { echo('X'); } elseif(in_array(7$_SESSION['o'])) { echo('O'); } else { echo('&nbsp;'); } ?></td>
<td style="width: 50px; height: 40px; border-right: 1px solid black;" onclick="add(this)" onmouseover="over(this, 'X')" onmouseout="over(this, '&nbsp;')" id="8"><?php if(in_array(8$_SESSION['x'])) { echo('X'); } elseif(in_array(8$_SESSION['o'])) { echo('O'); } else { echo('&nbsp;'); } ?></td>
<td style="width: 50px; height: 40px;" onclick="add(this)" onmouseover="over(this, 'X')" onmouseout="over(this, '&nbsp;')" id="9"><?php if(in_array(9$_SESSION['x'])) { echo('X'); } elseif(in_array(9$_SESSION['o'])) { echo('O'); } else { echo('&nbsp;'); } ?></td>
</tr>
</table>
<?php
    
if(is_won($_SESSION['x'])) {
        echo(
'<font color="Green"><b>Вы выиграли</b></font> | <a href="'.$_SERVER['PHP_SELF'].'">Ещё раз</a>');
        
session_kill();
        
$_SESSION['wins']++;
    } elseif(
is_won($_SESSION['o'])) {
        echo(
'<font color="Green"><b>Вы проиграли</b></font> | <a href="'.$_SERVER['PHP_SELF'].'">Ещё раз</a>');
        
session_kill();
        
$_SESSION['lose']++;
    } else {
        if(
count(array_merge($_SESSION['x'], $_SESSION['o'])) == 9) {
            echo(
'<font color="Green"><b>Ничья</b></font> | <a href="'.$_SERVER['PHP_SELF'].'">Ещё раз</a>');
            
session_kill();
        }
    }
    echo(
'<div style="position: absolute; top: 5%; right: 5%;"><table width="200"><td>Побед:</td><td><b>'.$_SESSION['wins'].'</b></td></tr><tr><td>Проигрышей:</td><td><b>'.$_SESSION['lose'].'</b></td></tr></table><div align="center"><a href="'.$_SERVER['PHP_SELF'].'?clear_score">Очистить счёт</a></div></div></body>'); 
?>
Пример скрипта.

Последний раз редактировалось NOmeR1; 10.02.2008 в 13:02..
 
Ответить с цитированием