2005/05/19 | [习作]我的俄罗斯方块as版----------- >
类别(flash学习) | 评论(10) | 阅读(766) | 发表于 18:15


全部代码:(好乱好乱的)

//--------- code by ycccc8202--------
//---------2005.5-----------
//---------俄罗斯方块--------
var row = 20;
var line = 10;
var ball_w = 20;
var s_x = 150;
var s_y = 1;
var show_x = 300;
var show_y = 300;
var ball_level = this.createEmptyMovieClip("ball", getNextHighestDepth());
var ColorArr = ["0xff0000", "0x990099", "0xffcc00", "0x33CCCC", "0x33ff00", "0xcc6600", "0x3300cc"];
var BallDot = 0;
//----------
var BallTeam = BallTeamSet();
var FillBallMap = FillMap();
var fRnd = random(BallTeam.length);
var nRnd = random(BallTeam.length);
var FallBallTeam = BallTeam[fRnd];
var NextBallTeam = BallTeam[nRnd];
var FallBallCol = ColorArr[fRnd];
var NextBallCol = ColorArr[nRnd];
var Rotationstatus = 0;
var cen_x = 5;
var cen_y = 1;
var depth = 0;
var num = 0;
var over = false;
DrawRound(s_x, s_y);
MakeBall();
function DrawBall(obj, color, l) {
num++;
trace(num+"num");
obj.createEmptyMovieClip("ball"+depth, depth);
with (obj["ball"+depth]) {
lineStyle(l, color);
moveTo(l/2, l/2-.5);
lineTo(l/2, l/2+.5);
_x = -1000;
}
depth++;
}
function BallTeamSet() {
var ballSet = [];
//----长形----
var _temp = [];
_temp.push([[-2, 0], [-1, 0], [0, 0], [1, 0]]);
_temp.push([[0, -2], [0, -1], [0, 0], [0, 1]]);
_temp.push([[-1, 0], [0, 0], [1, 0], [2, 0]]);
_temp.push([[0, -1], [0, 0], [0, 1], [0, 2]]);
ballSet.push(_temp);
//----L形----
_temp = [];
_temp.push([[1, -1], [-1, 0], [0, 0], [1, 0]]);
_temp.push([[0, -1], [0, 0], [0, 1], [1, 1]]);
_temp.push([[-1, 0], [0, 0], [1, 0], [-1, 1]]);
_temp.push([[-1, -1], [0, -1], [0, 0], [0, 1]]);
ballSet.push(_temp);
//----反L形----
_temp = [];
_temp.push([[-1, -1], [-1, 0], [0, 0], [1, 0]]);
_temp.push([[0, -1], [1, -1], [0, 0], [0, 1]]);
_temp.push([[-1, 0], [0, 0], [1, 0], [1, 1]]);
_temp.push([[0, -1], [0, 0], [-1, 1], [0, 1]]);
ballSet.push(_temp);
//----z形----
_temp = [];
_temp.push([[-1, 0], [0, 0], [0, 1], [1, 1]]);
_temp.push([[0, -1], [-1, 0], [0, 0], [-1, 1]]);
_temp.push([[-1, 0], [0, 0], [0, 1], [1, 1]]);
_temp.push([[0, -1], [-1, 0], [0, 0], [-1, 1]]);
ballSet.push(_temp);
//----反z形----
_temp = [];
_temp.push([[0, 0], [1, 0], [-1, 1], [0, 1]]);
_temp.push([[-1, -1], [-1, 0], [0, 0], [0, 1]]);
_temp.push([[0, 0], [1, 0], [-1, 1], [0, 1]]);
_temp.push([[-1, -1], [-1, 0], [0, 0], [0, 1]]);
ballSet.push(_temp);
//----反T形----
_temp = [];
_temp.push([[0, -1], [-1, 0], [0, 0], [1, 0]]);
_temp.push([[0, -1], [0, 0], [1, 0], [0, 1]]);
_temp.push([[-1, 0], [0, 0], [1, 0], [0, 1]]);
_temp.push([[0, -1], [-1, 0], [0, 0], [0, 1]]);
ballSet.push(_temp);
//----田形----
_temp = [];
_temp.push([[0, 0], [1, 0], [0, 1], [1, 1]]);
_temp.push([[0, 0], [1, 0], [0, 1], [1, 1]]);
_temp.push([[0, 0], [1, 0], [0, 1], [1, 1]]);
_temp.push([[0, 0], [1, 0], [0, 1], [1, 1]]);
ballSet.push(_temp);
return ballSet;
}
function DrawRound(s_x, s_y) {
lineStyle(0);
moveTo(s_x, s_y);
lineTo(s_x+ball_w*line, s_y);
lineTo(s_x+ball_w*line, s_y+ball_w*row);
lineTo(s_x, s_y+ball_w*row);
lineTo(s_x, s_y);
}
function MakeBall() {
for (var i = 0; i<200; i++) {
DrawBall(ball_level, 0xff0000, ball_w);
}
}
function FillMap() {
var fillmap = [];
for (var i = 0; i<20; i++) {
var temp = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
fillmap.push(temp);
}
return fillmap;
}
//-----------键盘控制--------------
var move = false;
var status;
var mykey = {};
mykey.onKeyDown = function() {
var key = Key.getCode();
//--------右-----------
if (key == Key.RIGHT) {
move = false;
for (var i = 0; i<4; i++) {
x = FallBallTeam[Rotationstatus][i][0]+cen_x;
y = FallBallTeam[Rotationstatus][i][1]+cen_y;
if (x<9 and FillBallMap[y][x+1] != 0) {
move = true;
}
if (x == 9) {
move = true;
}
}
if (move == false) {
cen_x++;
}
} else if (key == Key.LEFT) {
//-------------左--------------
move = false;
for (var i = 0; i<4; i++) {
x = FallBallTeam[Rotationstatus][i][0]+cen_x;
y = FallBallTeam[Rotationstatus][i][1]+cen_y;
if (x>0 and FillBallMap[y][x-1] != 0) {
move = true;
}
if (x == 0) {
move = true;
}
}
if (move == false) {
cen_x--;
}
} else if (key == Key.DOWN) {
//-------------下--------------
move = false;
for (var i = 0; i<4; i++) {
x = FallBallTeam[Rotationstatus][i][0]+cen_x;
y = FallBallTeam[Rotationstatus][i][1]+cen_y;
if (y<19 and FillBallMap[y+1][x] != 0) {
move = true;
}
if (y == 19) {
move = true;
}
}
if (move == false) {
cen_y++;
}
} else if (key == Key.UP) {
//--------------上--------------
move = false;
status = (Rotationstatus+1)%4;
for (var i = 0; i<4; i++) {
x = FallBallTeam[status][i][0]+cen_x;
y = FallBallTeam[status][i][1]+cen_y;
if (x<0 or x>9 or y>19 or FillBallMap[y][x] != 0) {
move = true;
}
}
if (move == false) {
Rotationstatus = status;
}
} else if (key == Key.SPACE) {
//-----------空格-----------
move = false;
status = (Rotationstatus+3)%4;
for (var i = 0; i<4; i++) {
x = FallBallTeam[status][i][0]+cen_x;
y = FallBallTeam[status][i][1]+cen_y;
if (x<0 or x>9 or y>19 or FillBallMap[y][x] != 0) {
move = true;
}
}
if (move == false) {
Rotationstatus = status;
}
}
for (var i = 0; i<4; i++) {
var j = FallBallTeam[Rotationstatus][i][0];
var k = FallBallTeam[Rotationstatus][i][1];
with (eval(ball_level["ball"+(i+BallDot)])) {
_x = s_x+(j+cen_x)*ball_w;
_y = s_y+(k+cen_y)*ball_w;
}
}
};
function BallTeamPosUpdate(BallDot) {
for (var i = 0; i<4; i++) {
j = FallBallTeam[Rotationstatus][i][0];
k = FallBallTeam[Rotationstatus][i][1];
with (ball_level["ball"+(i+BallDot)]) {
_x = s_x+(j+cen_x)*ball_w;
_y = s_y+(k+cen_y)*ball_w;
}
new Color(eval(ball_level["ball"+(i+BallDot)])).setRGB(ColorArr[fRnd]);
}
first = true;
for (var i = 0; i<4; i++) {
j = NextBallTeam[0][i][0];
k = NextBallTeam[0][i][1];
DrawBall(ball_level, NextBallCol, ball_w);
//trace(NextBallCol.toString(16));
trace(ball_level["ball"+(i+BallDot+4)]+"________<><><><>");
with (ball_level["ball"+(i+BallDot+4)]) {
_x = show_x+(j+cen_x)*ball_w;
_y = show_y+(k+cen_y)*ball_w;
}
new Color(eval(ball_level["ball"+(i+BallDot+4)])).setRGB(ColorArr[nRnd]);
}
}
Key.addListener(mykey);
//------------------------------
//
//---------------------第一次的生成---------
BallTeamPosUpdate(BallDot);
//---------------------
//---------run-------------------
function Run() {
_time = 0;
_leveltime = 5;
_delrun = false;
level = 0;
score = 0;
onEnterFrame = function () {
_time++;
if (_time>=_leveltime) {
_time = 0;
// ------------
// ------------
move = false;
trace("move == false");
for (var i = 0; i<4; i++) {
j = FallBallTeam[Rotationstatus][i][0]+cen_x;
k = FallBallTeam[Rotationstatus][i][1]+cen_y+1;
if (k>=20) {
move = true;
}
if (FillBallMap[k][j] != 0) {
move = true;
}
}
BallMove();
}
};
function BallMove() {
if (move == false) {
//trace("move");
cen_y++;
for (var i = 0; i<4; i++) {
j = FallBallTeam[Rotationstatus][i][0];
k = FallBallTeam[Rotationstatus][i][1];
with (eval(ball_level["ball"+(i+BallDot)])) {
_x = s_x+(j+cen_x)*ball_w;
_y = s_y+(k+cen_y)*ball_w;
}
}
} else if (cen_y == 1) {
delete onEnterFrame;
Key.removeListener(mykey);
trace("over");
} else {
// -------
// --------
for (var i = 0; i<4; i++) {
j = FallBallTeam[Rotationstatus][i][0]+cen_x;
k = FallBallTeam[Rotationstatus][i][1]+cen_y;
FillBallMap[k][j] = fRnd+1;
ball_level["ball"+(i+BallDot)].color = fRnd+1;
}
FullNum = 0;
for (var i = 0; i<20; i++) {
full = true;
for (var j in FillBallMap[i]) {
if (FillBallMap[i][j] == 0) {
full = false;
}
}
if (full) {
BallDot -= 10;
FillBallMap.splice(i, 1);
var temparr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
FillBallMap.unshift(temparr);
FullNum++;
}
}
if (FullNum != 0) {
//trace(FillBallMap);
for (var i = 1; i<FullNum; i++) {
score += 10*i;
}
level = int(score/1000)+1;
//_leveltime--;
if (level>9) {
level = 9;
}
k = 0;
for (var i = 0; i<20; i++) {
for (var j = 0; j<10; j++) {
if (FillBallMap[i][j] != 0) {
with (ball_level["ball"+k]) {
_x = s_x+j*ball_w;
_y = s_y+i*ball_w;
}
new Color(ball_level["ball"+k]).setRGB(ColorArr[FillBallMap[i][j]-1]);
k++;
}
}
}
//
for (; k<200; k++) {
ball_level["ball"+k]._x = -1000;
}
}
// -------------
//----------进行下一个---------
FallBallTeam = NextBallTeam;
fRnd = nRnd;
FallBallCol = ColorArr[fRnd];
nRnd = random(BallTeam.length);
NextBallTeam = BallTeam[nRnd];
NextBallCol = ColorArr[nRnd];
cen_x = 5;
cen_y = 1;
BallDot += 4;
Rotationstatus = 0;
BallTeamPosUpdate(BallDot);
//
// ----------------------
}
}
}
Run();
var restart = {};
restart.onKeyDown = function() {
if (Key.isDown(Key.CONTROL)) {
for (var i in ball_level) {
ball_level[i]._x = -100;
}
Key.addListener(mykey);
FillBallMap = FillMap();
fRnd = random(BallTeam.length);
nRnd = random(BallTeam.length);
FallBallTeam = BallTeam[fRnd];
NextBallTeam = BallTeam[nRnd];
FallBallCol = ColorArr[fRnd];
NextBallCol = ColorArr[nRnd];
Rotationstatus = 0;
cen_x = 5;
cen_y = 1;
BallTeamPosUpdate(BallDot);
Run();
}
};
Key.addListener(restart);
createTextField("info_word", getNextHighestDepth(), 400, 200, 200, 100);
info_word.text = "ctrl键重新再来
寒冰制造";



肯定有好多问题出现,请大家帮我纠正下,总算圆了下以前的梦,自己动手做出了俄罗斯。。



0

评论Comments

日志分类
首页[38]
flash学习[35]
图片收藏[1]
Apollo_Flex[2]