JavaScript 寫遊戲 : 俄羅斯方塊[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 dewin 的 blog

應該看得懂吧?

沒時間寫注釋。。。:(

這個差不多美的啦!只要向block褃面添加或修改就能改變方塳的形狀。:)

 

 

<!--
http://dwin.net
http://dewin.tk


copyright(c) 1998-2004 dewin all rights reserved

start 2002-09-20 14:45
finish  2002-10-31 23:50
last edit 2003-08-14 01:25
-->
<body>
<script>

var rows = 17;
var cells = 10;
var objw = objh = 20;

var scores= 0;
var marks = [100,400,900,1600];

var basebw = 5;
var basebgcolor = 'white';

var blockbw = 2;
var blockbs = 'inset';
var blockbc = 'orange';

var glowcolor = '#ffff00';
var glowstrength = 5;

var ospeed = 151;

 

//方塳數據

block = [];
block[0]=[
'   ',
'  1',
'111']
block[0].change = 4;
block[0].color = 'red';

block[1]=[
'   ',
'1  ',
'111']
block[1].change = 4;
block[1].color = 'green';

block[2]=[
'   ',
' 1 ',
'111']
block[2].change = 4;
block[2].color = 'orange';

block[3]=[
' 11',
'11 ']
block[3].change = 2;
block[3].color = 'fuchsia';

block[4]=[
'11 ',
' 11']
block[4].change = 2;
block[4].color = 'yellow';

block[5]=[
'1111']
block[5].change = 2;
block[5].color = 'lime';

block[6]=[
'11',
'11']
block[6].change = 1;
block[6].color = 'blue';


block[7]=[
'1']
block[7].change = 1;
block[7].color = 'gold';

block[8]=[
'   ',
'1 1',
'111']
block[8].change = 4;
block[8].color = 'pink';

block[9]=[
'111',
' 1 ',
' 1 ']
block[9].change = 4;
block[9].color = 'black';

 

 

 

 

//方塳准備下落
function readyfordown(obj1,obj2){
obj1.k = parseint(math.random()*block.length);
if(!newblock[obj1.k].length){
 switch(block[obj1.k].change){
  case 1:change0(obj1.k);break;
  case 2:change0(obj1.k);change1(obj1.k);break;
  case 4:change0(obj1.k);change1(obj1.k);change2(obj1.k);break;
  }
 }
obj1.change = parseint(math.random()*block[obj1.k].change);
obj2.innerhtml = newblock[obj1.k][obj1.change].ihtml;
obj1.gapx = parseint(newblock[obj1.k][obj1.change][0].length/2);
checkobjgapy(obj1,newblock[obj1.k][obj1.change].length);
obj1.x = parseint(cells/2);
obj1.y = 0;
}

function checkobjgapy(obj,k){
if(!newblock[obj.k][obj.change][k-1].join('').match(/\d+/)){
 obj.gapy = 1-k;
 checkobjgapy(obj,k-1);
 }
else obj.gapy = -k;
}

//改變方塳形狀
function changeblock(){
if(block[obj1.k].change > 1){
 obj1.testchange = (obj1.change+1 >= block[obj1.k].change)?0:obj1.change+1;
 obj1.testgapx = parseint(newblock[obj1.k][obj1.testchange][0].length/2);
 obj1.testgapy = -newblock[obj1.k][obj1.testchange].length;
 obj1.testl = obj1.x-obj1.testgapx;
 obj1.testt = obj1.y+obj1.testgapy;
 var k1 = k2 = areas;
 for(var i=obj1.testl;i>=0 && i>obj1.testl-newblock[obj1.k][obj1.testchange].lg;i--){if((k1=checkchangeblock(i))!=areas)break}
 for(var i=obj1.testl+1;i<cells && i<obj1.testl+newblock[obj1.k][obj1.testchange].lg;i++){if((k2=checkchangeblock(i))!=areas)break}
 if(k1 == k2) return;
 obj1.l = (math.abs(obj1.testl-k1)>math.abs(obj1.testl-k2))?k2:k1;
 obj1.t = obj1.testt;
 obj1.gapx = obj1.testgapx;
 obj1.gapy = obj1.testgapy;
 obj1.x = obj1.l+obj1.gapx;
 obj1.y = obj1.t-obj1.gapy;
 obj1.change = obj1.testchange;
 skindiv.style.left = obj1.l*objw;
 skindiv.style.top = obj1.t*objh;
 skindiv.innerhtml = newblock[obj1.k][obj1.change].ihtml;
 }
}

 

檢測改變後,方塳相對於左邊的值。

function checkchangeblock(lefts){
for(var y=0;y<newblock[obj1.k][obj1.testchange].length;y++){
 for(var x=0;x<newblock[obj1.k][obj1.testchange][0].length;x++){
  if(newblock[obj1.k][obj1.testchange][y][x]==1){
   try{if(map[obj1.testt+y][lefts+x] != ' ') return areas}
   catch(e){}
   }
  }
 }
return lefts;
}

 

 

//方向控制

function dir(xx,yy){
var special = false
if(newblock[obj1.k][obj1.change].length==1 && newblock[obj1.k][obj1.change][0]==1)
 for(var y=obj1.t+1;y<rows-1;y++)
  if(map[y+yy][obj1.l]==" "){
   special = true
   break;
   }
for(var y=newblock[obj1.k][obj1.change].length-1;y>=0;y--){
 for(var x=newblock[obj1.k][obj1.change][0].length-1;x>=0;x--){
  if(newblock[obj1.k][obj1.change][y][x]==1){
   try{

本文关键:俄羅斯方塊,俄罗斯方块,遊戲,游戏,javascript,jscript,dewin,dwin,js
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top