CS-Pro-Servers.info
Търсим хостъри пишете на скупе : barzi_qrosni2915
CS-Pro-Servers.info
Търсим хостъри пишете на скупе : barzi_qrosni2915
CS-Pro-Servers.info
Would you like to react to this message? Create an account in a few clicks or log in to continue.


Най-добрите CS сървъри за игра.
 
ИндексСайтПоследни снимкиРегистрирайте сеВход

 

 Как да си сложите Тетрис в сайта

Go down 
АвторСъобщение
Style
Регистрирани Потребители
Регистрирани Потребители
Style


Брой мнения : 25
Points : 45
Join date : 06.08.2011
Age : 30
Местожителство : София

Как да си сложите Тетрис в сайта Empty
ПисанеЗаглавие: Как да си сложите Тетрис в сайта   Как да си сложите Тетрис в сайта EmptyПон Авг 08, 2011 7:09 pm

<HTML>
<HEAD>
<TITLE>JavaScript - Tetris</TITLE>
<script LANGUAGE="JavaScript">
<!--

// Copyright (c) 1996-1997 Wolf. All rights reserved.
// Permission given to use the script provided that this notice remains as is.
// Additional scripts can be found at http://www.geocities.com/~yehuda/

// array to hold number of shapes used from each type
var statistics = new Array(7)
for (var shapeNum = 0; shapeNum < 7; ++shapeNum) {
statistics[shapeNum] = 0
}

// set pause to false
var paused = false

// game is currently running
var timerRunning = false

// no shape currently falling
var shape = -1

// timer is not running
var timerID = null

// initialize image variables for seven shapes
var on = new Array()
on[0] = new Image(12, 12)
on[1] = new Image(12, 12)
on[2] = new Image(12, 12)
on[3] = new Image(12, 12)
on[4] = new Image(12, 12)
on[5] = new Image(12, 12)
on[6] = new Image(12, 12)

// create a transparent block
var off = new Image(12, 12)

// set image URLs
on[0].src="10.gif"
on[1].src="11.gif"
on[2].src="12.gif"
on[3].src="13.gif"
on[4].src="14.gif"
on[5].src="15.gif"
on[6].src="16.gif"
off.src="0.gif"

// get number of images already laid out in the page
var firstImage = document.images.length

// create initial screen
drawScreen()

// array of screen (10 x 19)
var ar = new Array()
for (var i = 0; i < 10; ++i) {
ar[i] = new Array(19)
for (var j = 0; j < 19; ++j) {
ar[i][j] = 0
}
}

// draw initial empty screen
function drawScreen() {
with (document) {
// center entire game
write('<CENTER>')

// start main table
write('<TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0><TR><TD>')

// create board (10 x 19)
for (var i = 0; i < 19; ++i) {
for (var j = 0; j < 10; ++j) {
write('<IMG src=' + off.src + ' HEIGHT=' + off.height + ' WIDTH=' + off.width + '>')
}
write('<BR>')
}

// close table cell
write('</TD><TD VALIGN="top" ALIGN="center">')

// make small header ("Netris Deluxe")
write('<B><FONT SIZE=+2>N</FONT>ETRIS <FONT SIZE=+2>D</FONT>ELUXE</B><BR>')

// create form for lines and level displays
write('<FORM NAME="lineslevel"><TABLE BORDER=0 CELLPADDING=5 CELLSPACING=0>')

// make "LINES" table cell and header
write('<TR><TD WIDTH=100 ALIGN="center"><FONT SIZE=2>LINES</FONT><BR><INPUT TYPE="text" NAME="lines" VALUE="" SIZE=5></TD>')

// make "LEVEL" table cell and header
write('<TD WIDTH=100 ALIGN="center"><FONT SIZE=2>LEVEL</FONT><BR><INPUT TYPE="text" NAME="level" VALUE="" SIZE=5></TD></TR>')

// create start button link
write('<TR><TD WIDTH=100 ALIGN="center"><A href="javascript:start()" onMouseOver="window.status='Start game'; return true">')

// create start button image
write('<IMG src="start.gif" WIDTH=72 HEIGHT=24 BORDER=0></A></TD>')

// close start + pause table and form
write('</TABLE></FORM>')

// create table for shape statistics (two rows, seven columns)
write('<FORM NAME="stats"><TABLE BORDER=0 CELLPADDING=5 CELLSPACING=0><TR>')

// put one block of each type in each cell of upper row
for (var k = 0; k < 7; ++k) {
write('<TD ALIGN="center"><IMG src="' + on[k].src + '" HEIGHT=' + on[k].height + ' WIDTH=' + on[k].width + '></TD>')
}

// start new table row
write('</TR><TR>')

// create 7 text fields named "0", "1", "2", ..., "6"
for (var l = 0; l < 7; ++l) {
write('<TD ALIGN="center"><INPUT TYPE="text" SIZE=2 VALUE="0" NAME="' + l + '"></TD>')
}

// close statistics table and form
write('</TR></TABLE></FORM>')

// close table cell for header, start + pause buttons, and statistics, and start new row in main table
write('</TD></TR><TR><TD>')

// center control panel (left, right, down, rotate)
write('<CENTER>')

// organize control panel in a table
write('<TABLE BORDER=0>')

// create left table cell and button
write('<TR><TD><A href="javascript:moveX(-1)" onMouseOver="window.status='Move left'; return true" onMouseOut="window.status=''; return true"><IMG src="left.gif" WIDTH=24 HEIGHT=24 BORDER=0></A></TD>')

// create rotate table cell and button
write('<TD><A href="javascript:rotate()" onMouseOver="window.status='Rotate'; return true" onMouseOut="window.status=''; return true"><IMG src="rotate.gif" WIDTH=24 HEIGHT=24 BORDER=0></A></TD>')

// create right table cell and button
write('<TD><A href="javascript:moveX(1)" onMouseOver="window.status='Move right'; return true" onMouseOut="window.status=''; return true"><IMG src="right.gif" WIDTH=24 HEIGHT=24 BORDER=0></A></TD></TR>')

// close table for control panel
write('</TABLE>')

// close center of control panel
write('</CENTER>')

// close control panel table cell (main table) and create another main table cell with credits
write('</TD><TD ALIGN="center"><BR><FONT SIZE=2></FONT><BR><FONT SIZE=2></FONT></TD></TR></TABLE>')

// close center of main table
write('</CENTER>')
}
}

// return index of image according to given x and y coordinates
function computeIndex(x, y) {
return (y * 10 + x) + firstImage
}

// returns state of square (true / false)
function state(x, y) {
// assign URL of image at given coordinates to local variable
var source = document.images[computeIndex(x, y)].src

// expression evaluates to 0 or 1
return (source.charAt(source.lastIndexOf('/') + 1) == '0') ? false : true
}

// set square to 1 / 0
function setSquare(x, y, state) {
if (state == 0)
document.images[computeIndex(x, y)].src = off.src
else
document.images[computeIndex(x, y)].src = on[shape].src

// if state is 1 square is active, so 1 is assigned to ar[x][y]
// otherwise square is not active so 0 is assigned to ar[x][y]
ar[x][y] = state
}

// clear array so no active squares exist
function clearActive() {
// scan entire array and assign 0 to all elements (no active squares)
for (var i = 0; i < 10; ++i) {
for (var j = 0; j < 19; ++j) {
ar[i][j] = 0
}
}

// no shape is currently in screen
shape = -1
}

// check if specified move (left or right) is valid
function checkMoveX(step) {
// scan screen (direction does not matter)
for (var x = 0; x < 10; ++x) {
for (var y = 0; y < 19; ++y) {
// if current square is active
if (ar[x][y] == 1) {
Wink// check all conditions:
Wink// not out of range and not coliding with existing not active block
if (x + step < 0 || x + step > 9 || (state(x + step, y) && ar[x + step][y] == 0))
Wink // return false if move (new situation) is not legal
Wink return false
}
}
}

// return true if no invalid state has been encountered
return true
}

// check if specified move (down) is valid
function checkMoveY() {
// only possible step is one to the bottom
var step = 1

// scan screen (direction does not matter)
for (var x = 0; x < 10; ++x) {
for (var y = 0; y < 19; ++y) {
// if current square is active
if (ar[x][y] == 1) {
Wink// check all conditions:
Wink// not out of range and not coliding with existing not active block
if (y + step > 18 || (state(x, y + step) && ar[x][y + step] == 0))
Wink // return false if move (new situation) is not legal
Wink return false
}
}
}

// return true if no invalid state has been encountered
return true
}

// move all active squares step squares on the x axis
function moveX(step) {
// if specified move is not legal
if (!checkMoveX(step))
// terminate function (active blocks are not moved)
return

// if left movement then scan screen from left to right
if (step < 0) {
for (var x = 0; x < 10; ++x) {
for (var y = 0; y < 19; ++y) {
Wink// if current square is active
if (ar[x][y] == 1)
Wink // call function to handle movement
Wink smartX(x, y, step)
}
}
} else

// if right movement then scan screen from right to left
if (step > 0) {
for (var x = 9; x >= 0; --x) {
for (var y = 0; y < 19; ++y) {
Wink// if current square is active
if (ar[x][y] == 1)
Wink // call function to handle movement
Wink smartX(x, y, step)
}
}
}
}

// responsible for the blocks' horizontal movement
function smartX(x, y, step) {
// if moving one step to the left
if (step < 0)
// if the destination square needs to be turned on explicitly
if (ar[x + step][y] == 0)
// if there is a block to the right of the current block
if (x != 9 && ar[x - step][y] == 1)
Wink// set square to the left on without clearing current block
setSquare(x + step, y, 1)
else
Wink// clear current block and turn square to the left on
warp(x, y, x + step, y)
else
// if there is no block to the right of the current block
if (x == 9 || ar[x - step][y] == 0)
Wink// clear current block
setSquare(x, y, 0)

// if moving one step to the right
if (step > 0)
// if the destination square needs to be turned on explicitly
if (ar[x + step][y] == 0)
// if there is a block to the left of the current block
if (x != 0 && ar[x - step][y] == 1)
Wink// set square to the right on without clearing current block
setSquare(x + step, y, 1)
else
Wink// clear current block and turn square to the right on
warp(x, y, x + step, y)
else
// if there is no block to the left of the current block
if (x == 0 || ar[x - step][y] == 0)
Wink// clear current block
setSquare(x, y, 0)
}

// move all active squares step squares on the x axis
function moveY() {
// if specified move is not legal (shape is laid down on block or bottom panel)
if (!checkMoveY()) {
// active squares are not active anymore (should not be moved later)
clearActive()

// terminate function (active blocks are not moved)
return
}

// scan screen from bottom to top
for (var y = 18; y >= 0; --y) {
for (var x = 0; x < 10; ++x) {
// if current square is active
if (ar[x][y] == 1)
Wink// call function to handle movement
smartY(x, y)
}
}
}

// responsible for the blocks' vertical (downwards) movement
function smartY(x, y) {
// if the destination square needs to be turned on explicitly
if (ar[x][y + 1] == 0)
// if there is a block above current block
if (y != 0 && ar[x][y - 1] == 1)
// set square below on without clearing current block
setSquare(x, y + 1, 1)
else
// clear current block and turn square below on
warp(x, y, x, y + 1)
else
// if there is no block above the current block
if (y == 0 || ar[x][y - 1] == 0)
// clear current block
setSquare(x, y, 0)
}

// construct object containing shape
function shapeMap() {
// set minimum and maximum coordinates to opposite (minimum and maximum found thus far)
var minX = 9
var minY = 18
var maxX = 0
var maxY = 0

// scan screen to find actual minimum and maximum coordinates of active squares
for (var y = 0; y < 19; ++y) {
for (var x = 0; x < 10; ++x) {
// if current coordinates reflect active square
if (ar[x][y] == 1) {
if (x < minX)
Wink minX = x
if (x > maxX)
Wink maxX = x
if (y < minY)
Wink minY = y
if (y > maxY)
Wink maxY = y
}
}
}

// create a length property representing the x coordinate span
this.length = maxX - minX + 1

// create properties so hold minimum coordinates of both axisis
this.offsetX = minX
this.offsetY = minY

// construct minimum array containing all active squares respectively
for (x = 0; x <= maxX - minX; ++x) {
this[x] = new Array()
for (y = 0; y <= maxY - minY; ++y) {
this[x][y] = ar[x + minX][y + minY]
}
}
}

// random function to return an integer between 0 and 6
function getRandom() {
// use random number method to find integer between 0 and 8
var randomNum = Math.round(Math.random() * 8)

// call function again if random number is 0 or 8.
if (randomNum == 0 || randomNum == 8)
return getRandom()

// 1 to 7 => 0 to 6
randomNum--

// update selected shape's statistics
statistics[randomNum]++

// update statistics display form (update *all* fields so user cannot enter any value in fields)
for (var shape = 0; shape < 7; ++shape) {
document.stats[shape].value = statistics[shape]
}

// return the random number
return randomNum
}

// inserts a shape when there is no active shape
function insertShape() {
// initialize *global* variable
shape = getRandom()

// The following segment checks if the selected shape has room to enter.
// If there is no room the game is over (function return false).
// If there is room, the function inserts the shape by setting its initial coordinates.

if (shape == 0) {
if (state(3, 2) || state(3, 2) || state(3, 2) || state(3, 2))
return false
setSquare(3, 2, 1)
setSquare(4, 2, 1)
setSquare(5, 2, 1)
setSquare(6, 2, 1)
} else

if (shape == 1) {
if (state(4, 2) || state(5, 2) || state(4, 3) || state(5, 3))
return false
setSquare(4, 2, 1)
setSquare(5, 2, 1)
setSquare(4, 3, 1)
setSquare(5, 3, 1)
} else

if (shape == 2) {
if (state(3, 2) || state(4, 2) || state(5, 2) || state(3, 3))
return false
setSquare(3, 2, 1)
setSquare(4, 2, 1)
setSquare(5, 2, 1)
setSquare(3, 3, 1)
} else

if (shape == 3) {
if (state(3, 2) || state(4, 2) || state(4, 3) || state(5, 3))
return false
setSquare(3, 2, 1)
setSquare(4, 2, 1)
setSquare(4, 3, 1)
setSquare(5, 3, 1)
} else

if (shape == 4) {
if (state(4, 2) || state(5, 2) || state(3, 3) || state(4, 3))
return false
setSquare(4, 2, 1)
setSquare(5, 2, 1)
setSquare(3, 3, 1)
setSquare(4, 3, 1)
} else

if (shape == 5) {
if (state(3, 2) || state(4, 2) || state(5, 2) || state(4, 3))
return false
setSquare(3, 2, 1)
setSquare(4, 2, 1)
setSquare(5, 2, 1)
setSquare(4, 3, 1)
} else

if (shape == 6) {
if (state(3, 2) || state(4, 2) || state(5, 2) || state(5, 3))
return false
setSquare(3, 2, 1)
setSquare(4, 2, 1)
setSquare(5, 2, 1)
setSquare(5, 3, 1)
}

// return true because shape was able to enter screen
return true
}

// warp several squares if possible
// initial x1, initial y1, destination x1, destination y1, initial x2, initial y2, destination x2, destination y2, etc.
function complexWarp() {
// loop through arguments checking that each warp is valid
for (var i = 0; i < arguments.length; i += 4) {
// if warp is not valid
if (!checkWarp(arguments[i], arguments[i + 1], arguments[i + 2], arguments[i + 3]))
// terminate the function -- no squares warped
return
}

// loop through arguments again -- warp squares
for (var i = 0; i < arguments.length; i += 4) {
// call function to warp the current square corresponding to argument coordinates
warp(arguments[i], arguments[i + 1], arguments[i + 2], arguments[i + 3])
}
}

// check if warp is valid (used by complexWarp function)
function checkWarp(startX, startY, endX, endY) {
// if a destination coordinate is invalid or destination square is off
// state(endX, endY) must be last due to short-circuit evaluation
if (endX < 0 || endX > 9 || endY < 0 || endY > 18 || state(endX, endY))
// return false because warp is invalid
return false

// return true because warp has not been proved to be invalid (it is valid)
return true
}

// rotate the current active shape
function rotate() {
// create instance of shapeMap object (similar to minimum 2D array reflecting active shape)
var curMap = new shapeMap()

// note: all arguments handed to complexWarp are explained in that function

// if shape is 4 x 1 line
if (shape == 0)
// if line is in horizontal state
if (curMap.length == 4)
complexWarp(curMap.offsetX, curMap.offsetY, curMap.offsetX + 1, curMap.offsetY + 1, curMap.offsetX + 2, curMap.offsetY, curMap.offsetX + 1, curMap.offsetY - 1, curMap.offsetX + 3, curMap.offsetY, curMap.offsetX + 1, curMap.offsetY - 2)
// else line is in vertical state
else
complexWarp(curMap.offsetX, curMap.offsetY + 3, curMap.offsetX - 1, curMap.offsetY + 2, curMap.offsetX, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY + 2, curMap.offsetX, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY + 2)

// if shape is square
if (shape == 1)
// do not rotate shape because square does not change appearance after rotation
return

// if shape is L
if (shape == 2)
// if shape is L tilted 90 degrees to the right
if (state(curMap.offsetX, curMap.offsetY) && curMap.length == 3)
complexWarp(curMap.offsetX, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY + 1, curMap.offsetX + 2, curMap.offsetY, curMap.offsetX + 1, curMap.offsetY - 1, curMap.offsetX, curMap.offsetY, curMap.offsetX, curMap.offsetY - 1)
else
// if shape is L titled 180 degrees
if (state(curMap.offsetX + 1, curMap.offsetY) && curMap.length == 2)
complexWarp(curMap.offsetX + 1, curMap.offsetY + 2, curMap.offsetX, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY, curMap.offsetX, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY + 1)
else
Wink// if L is titled 90 degrees to the left
if (curMap.length == 3)
Wink complexWarp(curMap.offsetX, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY + 2, curMap.offsetX + 2, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY + 2)
Wink// else L is not titled
else
Wink complexWarp(curMap.offsetX, curMap.offsetY, curMap.offsetX + 1, curMap.offsetY + 1, curMap.offsetX, curMap.offsetY + 2, curMap.offsetX - 1, curMap.offsetY + 2, curMap.offsetX + 1, curMap.offsetY + 2, curMap.offsetX - 1, curMap.offsetY + 1)

if (shape == 3)
if (curMap.length == 3)
complexWarp(curMap.offsetX + 1, curMap.offsetY + 1, curMap.offsetX, curMap.offsetY + 1, curMap.offsetX + 2, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY - 1)
else
complexWarp(curMap.offsetX, curMap.offsetY + 2, curMap.offsetX + 1, curMap.offsetY + 2, curMap.offsetX + 1, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY + 2)

if (shape == 4)
if (curMap.length == 3)
complexWarp(curMap.offsetX, curMap.offsetY + 1, curMap.offsetX, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY, curMap.offsetX, curMap.offsetY - 1)
else
complexWarp(curMap.offsetX, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY + 1, curMap.offsetX, curMap.offsetY + 1, curMap.offsetX, curMap.offsetY + 2)

if (shape == 5)
if (curMap.length == 3 && state(curMap.offsetX, curMap.offsetY))
complexWarp(curMap.offsetX + 2, curMap.offsetY, curMap.offsetX + 1, curMap.offsetY - 1)
else
if (curMap.length == 2 && state(curMap.offsetX + 1, curMap.offsetY))
complexWarp(curMap.offsetX + 1, curMap.offsetY + 2, curMap.offsetX + 2, curMap.offsetY + 1)
else
if (curMap.length == 3)
Wink complexWarp(curMap.offsetX, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY + 2)
else
Wink complexWarp(curMap.offsetX, curMap.offsetY, curMap.offsetX - 1, curMap.offsetY + 1)

if (shape == 6)
if (curMap.length == 3 && state(curMap.offsetX + 1, curMap.offsetY))
complexWarp(curMap.offsetX, curMap.offsetY, curMap.offsetX, curMap.offsetY + 1, curMap.offsetX + 2, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY + 1, curMap.offsetX + 2, curMap.offsetY, curMap.offsetX + 1, curMap.offsetY - 1)
else
if (curMap.length == 2 && state(curMap.offsetX + 1, curMap.offsetY + 1))
complexWarp(curMap.offsetX, curMap.offsetY + 2, curMap.offsetX, curMap.offsetY, curMap.offsetX + 1, curMap.offsetY + 2, curMap.offsetX, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY + 1)
else
if (curMap.length == 3)
complexWarp(curMap.offsetX + 1, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY + 1, curMap.offsetX, curMap.offsetY + 2)
else
complexWarp(curMap.offsetX, curMap.offsetY, curMap.offsetX + 1, curMap.offsetY + 1, curMap.offsetX + 1, curMap.offsetY, curMap.offsetX + 2, curMap.offsetY + 1, curMap.offsetX, curMap.offsetY + 2, curMap.offsetX + 2, curMap.offsetY + 2)
}

// flood entire screen with given state
function flood(state) {
for (var x = 0; x < 10; ++x) {
for (var y = 0; y < 19; ++y) {
if (state == 0)
document.images[computeIndex(x, y)].src = off.src
else
document.images[computeIndex(x, y)].src = on[3].src
}
}
}

// return true if no active squares are found and false otherwise
function noActive() {
// scan board from top to bottom
for (var y = 0; y < 19; ++y) {
for (var x = 0; x < 10; ++ x) {
if (ar[x][y] == 1)
return false
}
}

// no active square found on the board
return true
}

// return true if the line with the given coordinate is completed
function isLine(y) {
// horizontal scan of current line
for (var x = 0; x < 10; ++x) {
// if a square is off the line is not completed
if (!state(x, y))
return false
}

// no square was found off
return true
}

// move block from one position to another
function warp(startX, startY, endX, endY) {
document.images[computeIndex(endX, endY)].src = document.images[computeIndex(startX, startY)].src
document.images[computeIndex(startX, startY)].src = off.src

// block in new position is now active
ar[endX][endY] = 1

// previous position is no longer active
ar[startX][startY] = 0
}

// function that starts game (*works with global variables only*)
function start() {
// accept level from user (no validation to save space)
tempLevel = prompt("Enter level to begin game (0 - 10):", "0")

// if user cancelled prompt
if (!tempLevel)
// abort function
return

// tempLevel is the actual level
level = tempLevel

// clear states, blocks, and timer
clearActive()
flood(0)
clearTimeout(timerID)

// clear statistics
for (var i = 0; i < 7; ++i) {
statistics[i] = 0
}

// convert input from string to integer
level = parseInt(level)

// calculate speed
speed = 800 - (level * 80)

// game begins with no lines completed!
lines = 0

// game starts
timerRunning = true

// game is not paused for sure
paused = false

// start actual playing
play()
}

// check if lines have been completed and drop accordingly
function dropLines() {
// on line has been found
var aLine = -1

// scan screen from top to bottom and stop when first complete line is found and assigned
for (var y = 0; y < 19; ++y) {
if (isLine(y)) {
aLine = y
break
}
}

// if a complete line has been found
if (aLine != -1) {
// increment lines
lines++

// if enough lines have been made increment level
if (lines > level * 10 + 9)
level++

if (level == 11)
alert("You are a champion!")

// scan screen from one line above the complete one to top of screen
for (y = aLine - 1; y >= 0; --y) {
for (var x = 0; x < 10; ++x) {
Wink// if current square is on
if (state(x, y))
Wink // call function to warp it down
Wink warp(x, y, x, y + 1)
else {
Wink // clear square below (similar to a warp because initial square is off)
Wink setSquare(x, y + 1, 0)
Wink}
}
}

// recursive call (maybe more than one line was completed)
dropLines()
}

// no square should be active
clearActive()
}

// main function responsible for game action
function play() {
// place values in form fields (display)
document.lineslevel.lines.value = lines
document.lineslevel.level.value = level

// if no shape is falling
if (noActive()) {
// check for line completions and drop them
dropLines()

// insert a new shape (if shape is not able to enter)
if (!insertShape()) {
// flood screen to black
flood(1)

// flood screen to blank
flood(0)

// display final results
alert('Game over!rrlevel = ' + level + 'rlines = '+ lines)

// clear timeout
clearTimeout(timerID)

// timer is not running
timerRunning = false

// terminate function (and game)
return
}
} else
// a shape is currently falling so move it one square downwards
moveY()

// call after speed milliseconds
timerID = setTimeout('play()', speed)
}

// constructs an object representing a specific position
function characteristics(x, y) {
// create property to hold status (block or empty)
this.state = state(x, y)

// is block found in specified position
if (state(x, y)) {
// local variable to hold URL of image at specified location
var src = document.images[computeIndex(x, y)].src

// local variable to hold color (0, 1, 2, ..., 6)
var color = src.charAt(src.lastIndexOf('/') + 2)

} else
// no color because no block found as specified position
color = -1

// convert color from string to integer and assign to property
this.color = parseInt(color)

// create property to hold square's current state (active or not, 1 or 0)
this.activity = ar[x][y]
}

// contructs a map of entire board and status
function fullMap() {
for (var x = 0; x < 10; ++x) {
this[x] = new Array(10)
for (var y = 0; y < 19; ++y) {
this[x][y] = new characteristics(x, y)
}
}

this.shape = shape
}

// pause and unpause game
function pause() {
// if game is not paused
if (!paused) {
// stop timer
clearTimeout(timerID)

// game is now paused
paused = true

// create global map of board
map = new fullMap()

// flood board so player cannot see current status
flood(1)

// no active blocks so user cannot move anything with buttons
clearActive()

alert('Oh no, not the boss...')
} else {
// return board to status before games was paused, according to the map object
for (var x = 0; x < 10; ++x) {
for (var y = 0; y < 19; ++y) {
if (!map[x][y].state)
Wink document.images[computeIndex(x, y)].src = off.src
else
Wink document.images[computeIndex(x, y)].src = on[map[x][y].color].src
Wink
ar[x][y] = map[x][y].activity
}
}
shape = map.shape

// game is no longer paused
paused = false

// play ball!
play()
}
}


// -->
</script>
<META NAME="GENERATOR" CONTENT="Microsoft FrontPage 5.0">
<META NAME="ProgId" CONTENT="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></HEAD>
<BODY bgcolor="#EBE9ED">
</BODY>
</HTML>


След като сте готови, го кръстете както искате, например аз съм го кръстил tetris.html . Все още не сме готови. Трябват ни и картинките. Ето ги и тях - http://uroci.net/downloads/Kartinki.rar . Разархивираме ги в същата папка в която сме сложили и файла tetris. Например на мен ми е папка Tetris, в нея имаме tetris.html и картинките

Върнете се в началото Go down
 
Как да си сложите Тетрис в сайта
Върнете се в началото 
Страница 1 от 1
 Similar topics
-
» Правила на САЙТА!
» C++ Игра за сайта ви
» Как да си добавите музика в сайта
» Как да си добавите Калкулатор в сайта
» Сайта за Безплатни Уроци по Програмиране и Дизайн

Права за този форум:Не Можете да отговаряте на темите
CS-Pro-Servers.info :: COUNTER-STRIKE 1.6 :: Counter-Strike 1.6 :: Уроци-
Идете на: