Вход Регистрация
Файл: gorod/sea-battle/game.html
Строк: 103
<?php
<title>Морской бой</title>
<
body bgcolor=#1e1e1e text=#ffffff>
<script>
var 
ship = [[[1,5], [1,2,5], [1,2,3,5], [1,2,3,4,5]], [[6,10], [6,7,10], [6,7,8,10], [6,7,8,9,10]]];
var 
dead = [[[201,203], [201,202,203], [201,202,202,203], [201,202,202,202,203]], [[204,206], [204,205,206], [204,205,205,206], [204,205,205,205,206]]];
var 
shiptypes = [["Миноносец",2,4],["Фрегат",3,4],[ "Крейсер",4,2],[ "Линкор",5,1]];
var 
gridx 16gridy 16; var player = [], computer = [], playersships = [], computersships = [];
var 
playerlives 0computerlives 0playflag=truestatusmsg=""; var preloaded = [];
function 
imagePreload() {
var 
i,ids = [1,2,3,4,5,6,7,8,9,10,100,101,102,103,201,202,203,204,205,206];
window.status "Загрузка изображений...пожалуйста подождите";
for (
i=0;i<ids.length;++i) {
var 
img = new Imagename "batt"+ids[i]+".gif";
img.src name;
preloaded[i] = img;}
window.status "";}
function 
setupPlayer(ispc) {
var 
y,x;
<!-- 
web-mastery.info  -->
grid = [];
for (
y=0;y<gridx;++y) {
grid[y] = [];
for (
x=0;x<gridx;++x)
grid[y][x] = [100,-1,0];}
var 
shipno 0; var s;
for (
s=shiptypes.length-1;s>=0;--s) {
var 
i;
for (
i=0;i<shiptypes[s][2];++i) {
var 
Math.floor(Math.random()*2); var len shiptypes[s][1], lx=gridxly=gridydx=0dy=0;
if ( 
d==0) {
lx gridx-len;
dx=1;} else {
ly gridy-len;
dy=1;}
var 
x,y,ok;
do {
Math.floor(Math.random()*ly);
Math.floor(Math.random()*lx);
var 
j,cx=x,cy=y;
ok true;
for (
j=0;j<len;++j) {
if (
grid[cy][cx][0] < 100) {
ok=false;
break;}
cx+=dx;
cy+=dy;}
} while(!
ok);
var 
j,cx=x,cy=y;
for (
j=0;j<len;++j) {
grid[cy][cx][0] = ship[d][s][j];
grid[cy][cx][1] = shipno;
grid[cy][cx][2] = dead[d][s][j];
cx+=dx;
cy+=dy;}
if (
ispc) {
computersships[shipno] = [s,shiptypes[s][1]];
computerlives++;} else {
playersships[shipno] = [s,shiptypes[s][1]];
playerlives++;}
shipno++;}} return grid;}
function 
setImage(y,x,id,ispc) {
if ( 
ispc ) {
computer[y][x][0] = id;
document.images["pc"+y+"_"+x].src "batt"+id+".gif";} else {
player[y][x][0] = id;
document.images["ply"+y+"_"+x].src "batt"+id+".gif";}}
function 
showGrid(ispc) {
var 
y,x;
for (
y=0;y<gridy;++y) {
for (
x=0;x<gridx;++x) {
if ( 
ispc )
document.write ('<a href="javascript:gridClick('+y+','+x+');"><img name="pc'+y+'_'+x+'" src="batt100.gif" width=16 height=16></a>');
else
document.write ('<a href="javascript:void(0);"><img name="ply'+y+'_'+x+'" src="batt'+player[y][x][0]+'.gif" width=16 height=16></a>');}
document.write('<br>');}}
function 
gridClick(y,x) {
if ( 
playflag ) {
if (
computer[y][x][0] < 100) {
setImage(y,x,103,true);
var 
shipno computer[y][x][1];
if ( --
computersships[shipno][1] == ) {
sinkShip(computer,shipno,true);
alert("Вы потопили мой "+shiptypes[computersships[shipno][0]][0]+"!");
updateStatus();
if ( --
computerlives == ) {
alert("Вы выиграли! Нажмите кнопку "Обновить"n"+
"для начала новой игры.");
playflag false;}}
if ( 
playflag computerMove();}
else if (
computer[y][x][0] == 100) {
setImage(y,x,102,true);
computerMove();}}}
function 
computerMove() {
var 
x,y,pass; var sx,sy; var selected false;
for (
pass=0;pass<2;++pass) {
for (
y=0;y<gridy && !selected;++y) {
for (
x=0;x<gridx && !selected;++x) {
if (
player[y][x][0]==103) {
sx=xsy=y;
var 
nup=(y>&& player[y-1][x][0]<=100); var ndn=(y<gridy-&& player[y+1][x][0]<=100);
var 
nlt=(x>&& player[y][x-1][0]<=100); var nrt=(x<gridx-&& player[y][x+1][0]<=100);
if ( 
pass == ) {
var 
yup=(y>&& player[y-1][x][0]==103); var ydn=(y<gridy-&& player[y+1][x][0]==103);
var 
ylt=(x>&& player[y][x-1][0]==103); var yrt=(x<gridx-&& player[y][x+1][0]==103);
if ( 
nlt && yrt) { sx x-1selected=true;}
else if ( 
nrt && ylt) { sx x+1selected=true;}
else if ( 
nup && ydn) { sy y-1selected=true;}
else if ( 
ndn && yup) { sy y+1selected=true;}} else {
if ( 
nlt ) { sx=x-1selected=true;}
else if ( 
nrt ) { sx=x+1selected=true;}
else if ( 
nup ) { sy=y-1selected=true;}
else if ( 
ndn ) { sy=y+1selected=true;}}}}}}
if ( !
selected ) {
do{
sy Math.floor(Math.random() * gridy);
sx Math.floor(Math.random() * gridx/2)*2+sy%2;
} while( 
player[sy][sx][0]>100 );}
if (
player[sy][sx][0] < 100) {
setImage(sy,sx,103,false);
var 
shipno player[sy][sx][1];
if ( --
playersships[shipno][1] == ) {
sinkShip(player,shipno,false);
alert("Я потопил Ваш "+shiptypes[playersships[shipno][0]][0]+"!");
if ( --
playerlives == ) {
knowYourEnemy();
alert("Вы проиграли! Нажмите кнопку "Обновить" для начала новой игры.");
playflag false;}}} else {
setImage(sy,sx,102,false);}}
function 
sinkShip(grid,shipno,ispc) {
var 
y,x;
for (
y=0;y<gridx;++y) {
for (
x=0;x<gridx;++x) {
if ( 
grid[y][x][1] == shipno )
if (
ispcsetImage(y,x,computer[y][x][2],true);
else 
setImage(y,x,player[y][x][2],false);}}}
function 
knowYourEnemy() {
var 
y,x;
for (
y=0;y<gridx;++y) {
for (
x=0;x<gridx;++x) {
if ( 
computer[y][x][0] == 103 )
setImage(y,x,computer[y][x][2],true);
else if ( 
computer[y][x][0] < 100 )
setImage(y,x,computer[y][x][0],true);}}}
function 
updateStatus() {
var 
f=false,i,"Computer has ";
for (
i=0;i<computersships.length;++i) {
if (
computersships[i][1] > 0) {
if (
fs=s+", "; else f=true;
shiptypes[computersships[i][0]][0];}}
if (!
f"больше ничего не осталось. Спасибо!";
statusmsg s;
window.status statusmsg;
}function 
setStatus() {
window.status statusmsg;}
imagePreload();
player setupPlayer(false);
computer setupPlayer(true);
document.write("<center><table><tr><td align=center><b>Игровое поле компьютера</b></td>"+
"<td align=center><b>Ваше игровое поле</b></td></tr><tr><td>");
showGrid(true);
document.write("</td><td>");
showGrid(false);
document.write("</td></tr></table></center>");
updateStatus();
setInterval("setStatus();"500);
<!-- 
OriginalJason Hotchkiss (jasonhotchkiss@home.com) -->
</
script>
</
body>
?>
Онлайн: 2
Реклама