導航:首頁 > 觀俄羅斯 > 如何把俄羅斯方塊組裝成功

如何把俄羅斯方塊組裝成功

發布時間:2022-04-13 10:50:51

Ⅰ 做俄羅斯方塊的思路或演算法是什麼

掃雷、俄羅斯方塊這些小游戲不是為了開發游戲而開發,做這些項目只是為了鞏固你學的java se這部分的知識。比如說,你做俄羅斯方塊,你先得弄出個界面吧,這里就鞏固的你awt或者swing上的知識了。等等。
做項目不是一下子上來想好了所有的細節才開始寫的。你先把最先要寫的寫出來,比如得有界面,你就用awt或者swing上的知識做個界面,要做界面是不是要繼承Frame這個類啊。窗口裡面什麼也沒添加,先把窗口的大小,關閉等先寫出來。
然後再想想,有了界面了,你得有界面裡面的東西吧,比如一個方塊,那麼你就想想怎麼樣才能讓窗口裡面有個方塊呢?是不是想到把它畫出來啊,畫出來那麼就用到了paint方法,那你就看看這個方法具體是怎麼用的,可以查網路或者api,查到paint方法是自動調用的,所以你只需要把它重寫下就好。
....
做任何項目都是這樣,一步一步寫出來的,不是所有的細節你都考慮清楚了才開始寫的。所以不要怕,慢慢寫,等這個項目寫完了,你就慢慢知道怎麼開發一個項目了。
我們平時做開發也是先把最先能寫好的寫好,再慢慢填充後面想到的。
IO方面的知識很重要,你看見這兩個字母就能想到它是關於寫入和讀出操作的,那麼對什麼寫入讀出呢,說白了就是對文件的寫入和讀出,明白了這個層面就開始對一個文件操作下,比如新建個文本文檔,對裡面寫點內容,然後再讀出來,列印,就用最底層的位元組流就行了,凡是後面有stream的都是位元組流,Reader和writer是字元流,位元組流是一個位元組一個位元組讀取的,字元流是一個字元一個字元讀取,這個上的區別,你用中文測試下就明白了,因為中文的漢字是兩個位元組的,用位元組流讀出來是亂碼。
至於後面的web方面的開發並沒有想像中的那麼難,搞開發就是這樣的,得一步一步來,前面的沒學明白,搞明白先,到了後面就會輕松很多。因為後面的知識學起來貌似比前面的java se簡單。
對於這個項目的意義呢,除了幫助你們鞏固以前的知識外,就是想拓寬點你的思路,要不然到後面做大項目,遇上問題就不會自己解決了,你在培訓期間有老師給你們知道,出來到了公司上班,就只有網路和自己了,所以在做這個小項目的時候思路放開點,寫代碼認真點,以後你才能遇上任何問題都能解決。

我以前是學硬體的,剛開始學java se才學了一個星期,這一個星期我比你還痛苦,可是我每天都堅持敲代碼,在第七天的時候我按照自己的思路就能做出這樣的小游戲了。到後來我學java ee的時候就比別人快,現在在公司上班兩年,開發速度也比別人快,代碼的健壯性也比別人的好,為什麼呢?原因只有一個,在我學習的時候,別人只有白天敲敲代碼,我晚上還在敲,到了凌晨兩點才睡覺,我寫的多,遇上的問題比別人多,在開發上的經驗就比別人多,在後面解決問題的時候,別人要試好幾次才能弄出來,我直接寫出來,都不用想。

最後,既然選擇了開發,就一步一步學扎實,只要你靜下心來,抱著解決問題的態度去做項目,沒有你完不成的。
有什麼問題,我願意分享。祝春節愉快。

Ⅱ 怎麼拼4x4俄羅斯方塊拼成的正方形

解:(1)5種,左拐,右拐,田字,凸字,一字 (2)1.四個一字形緊挨著2.兩個左拐一個正一個倒著上下結合成一個2X4長方形,然後兩個長方形對拼3.兩個右拐,同上4.四個田字成田字排列

Ⅲ 紙嫁衣1俄羅斯方塊怎麼拼

對於你的問題回答如下:

第四章方法:

這個俄羅斯方塊是不需要拼的,因為在拼湊之前,主角已經說了這個箱子有點腐朽,所以玩家可以點擊錘子,然後使用錘子來砸這個俄羅斯方塊,就可以直接把箱子給砸爛,然後順利過關。

所以無需費盡心思地去拼湊俄羅斯方塊,直接使用錘子砸掉就可以了,一定要注意聽主角的話,有的解密其實沒有多麼復雜。

其他章節方法:

1、俄羅斯方塊初始是散落在各個位置的,我們需要利用棋盤的空間,把方塊放進裡面;

2、首先點擊上面的棋子,然後把棋子放在棋盤中;

3、最後把方塊擺放成下圖這個形狀,全部放在棋盤中;

4、最後就能解鎖關卡,得到任務獎勵,是一把鑰匙。

希望我的回答能對你有所幫助。

Ⅳ 俄羅斯方塊訣竅

這本來就是個手腦並用的游戲,如果硬說訣竅,眼光要敏捷,一邊看好下一組是什麼樣的一邊還要顧著眼前如何擺,怎麼消除然後會對後邊的造成何種影響,很考驗智力的游戲,經常玩兒可以開發右腦。

Ⅳ 咋用俄羅斯方塊拼正方形

最下面一根條子平著放
中間一個正方
兩邊一邊一個7

Ⅵ 俄羅斯方塊怎麼做(要思想)

不要留空的

Ⅶ 8塊俄羅斯方塊拼成6*6正方形

您好
由於俄羅斯方塊每個方塊都是由四個小方塊組成的,4x8=32,而6x6=36,32≠36,所以 此題無解
希望有所幫助

Ⅷ 俄羅斯方塊拼圖

XXAXX
AAADD
BBDDE
BBOEE
CCCCE
X指不是格子的部分,A~E分別指5種俄羅斯方塊,O指單獨的小方塊。

Ⅸ 怎樣製作俄羅斯方塊

以下代碼粘貼在主場經第一禎,測試影片就看到了:
N = 20;//行數
WIDTH = 20;//方塊邊長
level = 0;//開始等級(下落速度)
ret = new Array();//當前出現的方塊
nextret = new Array();//下一個出現的方塊
bg = new Array();//背景數組
createEmptyMovieClip("panel", 1048575);//所有方塊都在此mc里
for (i = 0; i < 5; i++) {
//初始化方塊數組,2*5格式,前四行代表每個方塊的4個小塊的位置坐標,最後一行第一列是方塊形狀,第二列是方塊旋轉方向
ret.push(new Array(2));
nextret.push(new Array(2));
}
for (i = 0; i < 20; i++) {//初始化背景數組,10*20格式
bg.push(new Array(10));
}
X = Y = panel._x = panel._y = 0;//換為X、Y表示
function reach(x:Number, y:Number, ret:Object) {
//x、y為方塊位置,ret為方塊形狀,若方塊ret下落一格碰到邊界或者方塊返回1
var i:Number, j:Number, k:Number;
for (i = 0; i < N; i++) {
for (j = 0; j < 10; j++) {
if (bg[i][j] == 219) {
for (k = 0; k < 4; k++) {
if (x + ret[k][0] == j && y + ret[k][1] + 1 == i) {
return 1;
}
}
}
}
}
return 0;
}
function lrnotout(lorr:Number, a:Object) {
//lorr==-1代表a往左邊一格可行性的判斷,lorr==1代表右邊一格可行性的判斷,lorr==0代表a的位置合理性的判斷,出現不合理則返回0
var i:Number;
if (lorr == -1) {
for (i = 0; i < 4; i++) {
if (x + a[i][0] - 1 < 0 || reach(x - 1, y - 1, a)) {
return 0;
}
}
}
if (lorr == 1) {
for (i = 0; i < 4; i++) {
if (x + a[i][0] + 1 > 9 || reach(x - 1, y + 1, a)) {
return 0;
}
}
}
if (lorr == 0) {
for (i = 0; i < 4; i++) {
if (x + a[i][0] < 0 || x + a[i][0] > 9) {
return 0;
}
}
}
return 1;
}
function rv(a:Object, ret:Object) {
//方塊賦值,將a方塊賦值到ret方塊
var i:Number;
for (i = 0; i < 5; i++) {
ret[i][0] = a[i][0], ret[i][1] = a[i][1];
}
}
function rotate(ret:Object) {
//根據方塊ret最後一行(分別是形狀指示變數和旋轉方向變數)為ret的前四行賦以具體形狀值
switch (ret[4][0]) {
case 0 ://方形
a = [[1, 0], [2, 0], [1, 1], [2, 1], [0, 0]];
rv(a, ret);
return;
case 1 ://長形
switch (ret[4][1]) {
case 1 :
a = [[0, 0], [1, 0], [2, 0], [3, 0], [1, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[1, 0], [1, 1], [1, 2], [1, 3], [1, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
case 2 ://Z形
switch (ret[4][1]) {
case 1 :
a = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[2, 0], [1, 1], [2, 1], [1, 2], [2, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
case 3 ://反Z形
switch (ret[4][1]) {
case 1 :
a = [[1, 1], [2, 1], [0, 2], [1, 2], [3, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[1, 0], [1, 1], [2, 1], [2, 2], [3, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
case 4 ://T形
switch (ret[4][1]) {
case 3 :
a = [[1, 0], [0, 1], [1, 1], [2, 1], [4, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[1, 0], [0, 1], [1, 1], [1, 2], [4, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 1 :
a = [[0, 1], [1, 1], [2, 1], [1, 2], [4, 2]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 2 :
a = [[1, 0], [1, 1], [2, 1], [1, 2], [4, 3]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
case 5 ://倒L形
switch (ret[4][1]) {
case 3 :
a = [[1, 0], [2, 0], [1, 1], [1, 2], [5, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[0, 1], [0, 2], [1, 2], [2, 2], [5, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 1 :
a = [[2, 0], [2, 1], [1, 2], [2, 2], [5, 2]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 2 :
a = [[0, 1], [1, 1], [2, 1], [2, 2], [5, 3]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
case 6 ://L形
switch (ret[4][1]) {
case 3 :
a = [[1, 0], [2, 0], [2, 1], [2, 2], [5, 0]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 0 :
a = [[0, 1], [1, 1], [2, 1], [0, 2], [5, 1]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 1 :
a = [[1, 0], [1, 1], [1, 2], [2, 2], [5, 2]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
case 2 :
a = [[2, 1], [0, 2], [1, 2], [2, 2], [5, 3]];
if (lrnotout(0, a) && !reach(x, y - 1, a)) {
rv(a, ret);
}
return;
}
}
}
function generate(ret:Object) {//隨機產生方塊函數(可進一步修正)
ret[4][0] = Math.floor(Math.random() * 7);
ret[4][1] = Math.floor(Math.random() * 4);
rotate(ret);//完成方塊ret的具體形狀的賦值
}
function init() {//初始化背景、方塊、運動函數
var i:Number, j:Number;
for (i = 0; i < N; i++) {//初始化背景,邊界為219,其餘為' '
for (j = 0; j < 10; j++) {
if (i == N - 1) {
bg[i][j] = 219;
} else {
bg[i][j] = ' ';
}
}
}
for (i = 0; i < 5; i++) {//為當前方塊賦初值0
ret[i][0] = ret[i][1] = 0;
}
generate(ret);//產生當前方塊
generate(nextret);//產生下一個方塊
y = 0, x = 3, score = lines = 0, level=0;//當前位置坐標和計分系統初始化
_tetris.removeTextField();//如果從結束過的游戲恢復,刪除結束標志
display();//顯示畫面
frameflag = 0;//標示下落時間間隔
onEnterFrame = function () {
frameflag++;
if (10 - frameflag < level) {//根據等級level確定下落時間間隔
frameflag = 0;
go();//下落及判斷
}
};
}
function drawblock(a, b, c, d) {//繪制方塊的小塊
with (panel) {
beginFill(0x000FFF, 100);
lineStyle(1, 0xFF00FF);
moveTo(panel._x + a, panel._y + b);
lineTo(panel._x + c, panel._y + b);
lineTo(panel._x + c, panel._y + d);
lineTo(panel._x + a, panel._y + d);
lineTo(panel._x + a, panel._y + b);
endFill();
}
}
function erase() {//刪除一行方塊
var n:Number = 0, i:Number, j:Number, k:Number, l:Number;
for (i = 0; i < N - 1; i++) {
for (j = 0; j < 10; j++) {
if (bg[i][j] == ' ') {//如果該行有空,則開始判斷下一行
i++, j = -1;
if (i == N - 1) {//行N-1為底線,不判斷
break;
}
} else if (j == 9) {//判斷到該行最後一列都沒有空
for (k = i; k >= 1; k--) {//上方方塊下落
for (l = 0; l < 10; l++) {
bg[k][l] = bg[k - 1][l];
}
}
for (l = 0; l < 10; l++) {//刪除該行
bg[0][l] = ' ';
}
n++;//此次刪除行數變數增一
if ((lines + n) % 30 == 0) {//刪除行數總數到30的倍數則等級上升
level = (level + 1) % 10;
}
}
}
}
lines += n, score += (n * n + n) * 50;//總行數增n,計算得分
}
function display() {
//顯示函數,採用全部清除再重繪制的方法(因為這個程序本來是在Turbo C 2.0的文本環境下完成的)
var i:Number, j:Number;
panel.clear();
with (panel) {//畫邊界
lineStyle(1, 0x0000FF);
moveTo(panel._x, panel._y);
lineTo(panel._x + WIDTH * 10, panel._y);
lineTo(panel._x + WIDTH * 10, panel._y + WIDTH * (N - 1));
lineTo(panel._x, panel._y + WIDTH * (N - 1));
lineTo(panel._x, panel._y);
}
for (i = 0; i < 4; i++) {//當前方塊占據的地方賦值為邊界類型219
bg[y + ret[i][1]][x + ret[i][0]] = 219;
}
for (i = 0; i < N - 1; i++) {//繪制背景方塊
for (j = 0; j < 10; j++) {
if (bg[i][j] == 219) {
drawblock(j * WIDTH + X, i * WIDTH + Y, j * WIDTH + WIDTH + X, i * WIDTH + WIDTH + Y);
}
}
}
for (i = 0; i < 4; i++) {//繪制當前方塊
drawblock(nextret[i][0] * WIDTH + 14 * WIDTH + X, nextret[i][1] * WIDTH + 12 * WIDTH + Y, nextret[i][0] * WIDTH + WIDTH + 14 * WIDTH + X, nextret[i][1] * WIDTH + WIDTH + 12 * WIDTH + Y);
}
for (i = 0; i < 4; i++) {//當前方塊繪制完畢,重新將當前位置改為' '
bg[y + ret[i][1]][x + ret[i][0]] = ' ';
}
createTextField("_lvltxt", 1, 270, 100, 100, 20);//繪制計分系統
createTextField("_scrtxt", 2, 270, 130, 100, 20);
createTextField("_lnstxt", 3, 270, 160, 100, 20);
_lvltxt.text = "Level: " + level;
_scrtxt.text = "Score: " + score;
_lnstxt.text = "Lines: " + lines;
}
function go() {//下落函數
var sss:Number = reach(x, y, ret);//當前方塊下落一格是否碰到邊界或方塊
var ii:Number;
if (!sss) {
y++;//如果當前方塊下落一格沒有碰到邊界或方塊則下落一格
}
display();//重新繪制
if (sss) {//碰到邊界或方塊
score += 10;//得10分
display();//重新繪制
for (ii = 0; ii < 4; ii++) {//修改背景數組,將當前方塊的位置改為邊界類型
bg[y + ret[ii][1]][x + ret[ii][0]] = 219;
}
erase();//刪除行判斷及執行
rv(nextret, ret);//將下一個方塊賦值為當前方塊
y = 0, x = 3;//重置方塊位置
generate(nextret);//生成下一個方塊
display();//重新繪制
if (reach(x, y, ret)) {//如果下一格碰到方塊則游戲結束
createTextField("_tetris", 100000, WIDTH * 3.3, WIDTH * N / 3, 70, 20);
_tetris._x += 200;
_tetris._y += 50;
_tetris._xscale = 300;
_tetris._yscale = 300;
_tetris.background = true;
_tetris.text = "Game Over!";
onEnterFrame = function () {//停止下落
};
}
}
}
function key() {
if (Key.isDown(Key.UP)) {
rotate(ret);
display();
}
if (Key.isDown(Key.LEFT)) {
if (lrnotout(-1, ret)) {//左移可行性判斷
x--;
display();
}
}
if (Key.isDown(Key.RIGHT)) {
if (lrnotout(1, ret)) {//右移可行性判斷
x++;
display();
}
}
if (Key.isDown(Key.DOWN)) {//鍵盤控制下落
go();
}
if (Key.isDown(Key.SPACE)) {//一鍵下落到底
while (!reach(x, y, ret)) {
y++;
}
go();
}
if (Key.isDown(82)) { //重新開始游戲
init();
}
}
init();//初始化
setInterval(key, 80);//每個80毫秒執行一次鍵盤事件函數
createTextField("hinttxt",33324,200,20,300,50);
hinttxt.text="鍵盤鍵:上,下,左,右,R(reset),空格";

閱讀全文

與如何把俄羅斯方塊組裝成功相關的資料

熱點內容
金華義烏國際商貿城雨傘在哪個區 瀏覽:765
俄羅斯如何打通飛地立陶宛 瀏覽:1141
韓國如何應對流感 瀏覽:924
在德國愛他美白金版賣多少錢 瀏覽:963
澳大利亞養羊業為什麼發達 瀏覽:1399
如何進入法國高等學府 瀏覽:1480
巴西龜喂火腿吃什麼 瀏覽:1409
巴西土地面積多少萬平方千米 瀏覽:1271
巴西龜中耳炎初期要用什麼葯 瀏覽:1233
國際為什麼鋅片如此短缺 瀏覽:1637
巴西是用什麼規格的電源 瀏覽:1459
在中國賣的法國名牌有什麼 瀏覽:1364
在菲律賓投資可用什麼樣的居留條件 瀏覽:1273
德國被分裂為哪些國家 瀏覽:881
澳大利亞跟團簽證要什麼材料 瀏覽:1213
德國大鵝節多少錢 瀏覽:880
去菲律賓過關時會盤問什麼 瀏覽:1204
澳大利亞女王為什麼是元首 瀏覽:1030
有什麼免費的韓國小說軟體 瀏覽:762
申請德國學校如何找中介 瀏覽:669