1. 程式人生 > >javascript俄羅斯方塊遊戲

javascript俄羅斯方塊遊戲

  1 <html><head><title>俄羅斯方塊-柯樂義</title>
  2 <link href="http://keleyi.com/game/5/index/keleyielsfk.css" type="text/css" rel="Stylesheet" /></head>
  3 <body><a href="http://keleyi.com/a/bjac/600xsi0s.htm">原文</a></body></html>
  4 <script>
  5 var
over = false, shapes = ("0,1,1,1,2,1,3,1;1,0,1,1,1,2,2,2;2,0,2,1,2,2,1,2;0,1,1,1,1,2,2,2;1,2,2,2,2,1,3,1;1,1,2,1,1,2,2,2;0,2,1,2,1,1,2,2").split(";"); 6 function create(tag, css) { 7 var elm = document.createElement(tag); 8 elm.className = css; 9 document.body.appendChild(elm); 10 return elm;
11 } 12 function Tetris(c, t, x, y) { 13 var c = c ? c : "c"; 14 this.divs = [create("div", c), create("div", c), create("div", c), create("div", c)]; 15 this.reset = function () { 16 this.x = typeof x != 'undefined' ? x : 3; 17 this.y = typeof y != 'undefined' ? y : 0; 18 this.shape =
t ? t : shapes[Math.floor(Math.random() * (shapes.length - 0.00001))].split(","); 19 this.show(); 20 if (this.field && this.field.check(this.shape, this.x, this.y, 'v') == 'D') { 21 over = true; 22 this.field.fixShape(this.shape, this.x, this.y); 23 alert('遊戲結束。http://keleyi.com/game/5/'); 24 } 25 } 26 this.show = function () { 27 for (var i in this.divs) { 28 this.divs[i].style.left = (this.shape[i * 2] * 1 + this.x) * 20 + 'px'; 29 this.divs[i].style.top = (this.shape[i * 2 + 1] * 1 + this.y) * 20 + 'px'; 30 } 31 } 32 this.field = null; 33 this.hMove = function (step) { 34 var r = this.field.check(this.shape, this.x - -step, this.y, 'h'); 35 if (r != 'N' && r == 0) { 36 this.x -= -step; 37 this.show(); 38 } 39 } 40 this.vMove = function () { 41 if (this.field.check(this.shape, this.x, this.y - -1, 'v') == 'N') { 42 this.y++; 43 this.show(); 44 } 45 else { 46 this.field.fixShape(this.shape, this.x, this.y); 47 this.field.findFull(); 48 this.reset(); 49 } 50 } 51 this.rotate = function () { 52 var s = this.shape; 53 var newShape = [3 - s[1], s[0], 3 - s[3], s[2], 3 - s[5], s[4], 3 - s[7], s[6]]; 54 var r = this.field.check(newShape, this.x, this.y, 'h'); 55 if (r == 'D') return; 56 if (r == 0) { 57 this.shape = newShape; 58 this.show(); 59 } 60 else if (this.field.check(newShape, this.x - r, this.y, 'h') == 0) { 61 this.x -= r; 62 this.shape = newShape; 63 this.show(); 64 } 65 } 66 this.reset(); 67 } 68 function Field(w, h) { 69 this.width = w ? w : 10; 70 this.height = h ? h : 20; 71 this.show = function () { 72 var f = create("div", "f") 73 f.style.width = this.width * 20 + 'px'; 74 f.style.height = this.height * 20 + 'px'; 75 } 76 this.findFull = function () { 77 for (var l = 0; l < this.height; l++) { 78 var s = 0; 79 for (var i = 0; i < this.width; i++) { 80 s += this[l * this.width + i] ? 1 : 0; 81 } 82 if (s == this.width) { 83 this.removeLine(l); 84 } 85 } 86 } 87 this.removeLine = function (line) { 88 for (var i = 0; i < this.width; i++) { 89 document.body.removeChild(this[line * this.width + i]); 90 } 91 for (var l = line; l > 0; l--) { 92 for (var i = 0; i < this.width; i++) { 93 this[l * this.width - -i] = this[(l - 1) * this.width - -i]; 94 if (this[l * this.width - -i]) this[l * this.width - -i].style.top = l * 20 + 'px'; 95 } 96 } 97 } 98 this.check = function (shape, x, y, d) { 99 var r1 = 0, r2 = 'N'; 100 for (var i = 0; i < 8; i += 2) { 101 if (shape[i] - -x < 0 && shape[i] - -x < r1) 102 { r1 = shape[i] - -x; } 103 else if (shape[i] - -x >= this.width && shape[i] - -x > r1) 104 { r1 = shape[i] - -x; } 105 if (shape[i + 1] - -y >= this.height || this[shape[i] - -x - -(shape[i + 1] - -y) * this.width]) 106 { r2 = 'D' } 107 } 108 if (d == 'h' && r2 == 'N') return r1 > 0 ? r1 - this.width - -1 : r1; 109 else return r2; 110 } 111 this.fixShape = function (shape, x, y) { 112 var d = new Tetris("d", shape, x, y); 113 d.show(); 114 for (var i = 0; i < 8; i += 2) { 115 this[shape[i] - -x - -(shape[i + 1] - -y) * this.width] = d.divs[i / 2]; 116 } 117 } 118 } 119 var f = new Field(); 120 f.show(); 121 var s = new Tetris(); 122 s.field = f; 123 s.show(); 124 window.setInterval("if(!over)s.vMove();", 500); 125 document.onkeydown = function (e) { 126 if (over) return; 127 var e = window.event ? window.event : e; 128

相關推薦

javascript俄羅斯方塊遊戲

1 <html><head><title>俄羅斯方塊-柯樂義</title> 2 <link href="http://keleyi.com/game/5/index/keleyielsfk.css" type="text/css" rel=

linux俄羅斯方塊遊戲

linux俄羅斯方塊遊戲 程式碼 #!/bin/bash # Tetris Game # 10.21.2003 xhchen<[email][email protected][/email]> #APP declaration APP_NAME="${0##*[\\

[文件和原始碼分享] 基於Python的PyGame的俄羅斯方塊遊戲設計與實現

近年來,隨著遊戲產業的突飛猛進,遊戲玩家的技術也是與日俱增,當你看見遊戲高手完美的表演時,你是否想過我也能達到那種水平,本程式用Python語言編寫俄羅斯方塊,左側顯示正在執行的遊戲,右邊顯示下一個出現的形狀、等級和積分等。遊戲執行時隨著等級的提高而速度加快,這需要玩家快速操作。因此,本程式主要意義是為高手玩

一個很牛的 linux shell指令碼編寫的俄羅斯方塊遊戲例項程式碼,非常牛逼

可以將下面程式碼直接儲存為sh檔案。 #!/bin/bash   # Tetris Game # 10.21.2003 xhchen< [email][email protected][/email]>   #APP declaration

[原始碼和文件分享]基於Python的PyGame的俄羅斯方塊遊戲設計與實現

摘 要 近年來,隨著遊戲產業的突飛猛進,遊戲玩家的技術也是與日俱增,當你看見遊戲高手完美的表演時,你是否想過我也能達到那種水平,本程式用Python語言編寫俄羅斯方塊,左側顯示正在執行的遊戲,右邊顯示下一個出現的形狀、等級和積分等。遊戲執行時隨著等級的提高而速度加快,這需要玩家快速操作。因此,本

[原始碼和文件分享]基於Java的俄羅斯方塊遊戲

一 需求分析 掌握基本的圖形程式設計方法 掌握Java事件處理程式編寫方法 掌握編寫基於TCP或UDP協議的網路通訊程式 掌握Java的流、檔案、多執行緒等程式設計技術 二 程式設計 2.1 類之間關係 關係圖如下所示: 2.2

CocosCreater的俄羅斯方塊遊戲實現

前段時間要做課程設計,發現可以做俄羅斯方塊,就想著用cocoscreater做一個俄羅斯方塊遊戲,順便發上來。 內容就偷個懶,從自己的課程設計拿過來,不再寫了。。自己也記錄一下構思過程。 當然,首先要把連結發上來: 接下來就照著自己的設計論文一一複製上來啦。 要文件的直接

C語言之俄羅斯方塊遊戲實現

  來自《C語言課程設計案例精編》,蠻好的,可以參照。 /*  *俄羅斯方塊源程式  */ #include <stdio.h> #include <stdlib.h> #include <dos.h> #include <grap

使用Unity製作俄羅斯方塊遊戲

1. 操作環境    Unity3D 4.1.0版本、Win 7    備註:該方法並非本人原創,我也是根據別人的程式碼來學習的。 2. 思路分析    該方法中,只有2個指令碼,一個是控制方塊的(Block.cs),另外一個是控制遊戲場景的(Manager.cs)。遊戲完

PyQt5中文基礎教程12 俄羅斯方塊遊戲

本章我們要製作一個俄羅斯方塊遊戲。 + Tetris 俄羅斯方塊遊戲是世界上最流行的遊戲之一。是由一名叫Alexey Pajitnov的俄羅斯程式設計師在1985年製作的,從那時起,這個遊戲就風靡了各個遊戲平臺。 俄羅斯方塊歸類為下落塊迷宮遊戲。遊戲有7個基本形狀:S

Qt做的俄羅斯方塊遊戲

最近一直在用Qt折騰一個簡單的俄羅斯方塊遊戲,期間斷斷續續經過將近一個月的折騰,終於完成啦,掛在這裡,供大家評閱,第一次做遊戲,肯定會有很多的不足之處,希望大家指正。 其實做這個遊戲主要是想學學多層控制元件的效果,因為以前做過一些簡單的應用型軟體都是單層控制元件的,沒有這

用python 和pyqt5寫俄羅斯方塊遊戲

# 俄羅斯方塊遊戲效果展示本章我們要製作一個俄羅斯方塊遊戲。## Tetris> 譯註:稱呼:方塊是由四個小方格組成的俄羅斯方塊遊戲是世界上最流行的遊戲之一。是由一名叫Alexey Pajitnov的俄羅斯程式設計師在1985年製作的,從那時起,這個遊戲就風靡了各個遊戲

JavaScript-俄羅斯方塊

<!DOCTYPE html> <html> <head></head> <body> <div id="box" style="width:252px;font:25px/25px 宋體;bac

【轉載】88行程式碼實現俄羅斯方塊遊戲(含講解)

#include <windows.h> #include <stdio.h> #include <time.h> #include <conio.h> #include <stdlib.h> char gcTex

【180622】帶音效的VC++俄羅斯方塊遊戲原始碼

今天再次發一個經典的俄羅斯方塊遊戲的源程式,以前發有很多了,有興趣的自己在本站翻翻看。今天發的這個帶有音效,而且程式碼裡的註釋也超多,對學習VC++的小遊戲程式設計絕對有啟發。  裡面有不少技巧在編寫其

C++編寫簡單的俄羅斯方塊遊戲

項目目錄結構 else 下載地址 文件夾 每次 ram -- 代碼 下載 代碼地址如下:http://www.demodashi.com/demo/14593.html C++編寫簡單的俄羅斯方塊遊戲 使用C++編寫一個簡單的俄羅斯方塊遊戲。 1 環境要求 使用C++圖

JavaScript實現俄羅斯方塊(詳細註釋

learn 基本 nload alt log ref 遊戲截圖 www tar 借鑒了慕課網的課程《基於websocket的火拼俄羅斯(單機版)》雖然改動比較多,但是還是核心部分沒有改,加了一些不怎麽好聽的聲音,和看起來並不好看的界面。 CSS部分基本是瞎寫的,因為對於H

【開發記錄】微信小遊戲開發入門——俄羅斯方塊

了解 分享 公眾 lib 不必要 並且 視頻 text box 叨叨   我在前一陣子,打算做一個微信小遊戲,當然是單機的,只是為了了解小遊戲開發的過程,最終選擇了俄羅斯方塊這一經典小遊戲作為demo,源代碼已托管值github,當然,這個遊戲demo對用不並不友好,但是已

史上最短小精悍的JavaScript編寫的俄羅斯方塊,僅僅60行程式碼

我要分享 經常會看見某些所謂的大牛,老是拿工作年限做實力的標籤,要他拿出硬本事有人還真不如一個入行兩年的前端工作者,一個經驗用很多年真的有用嗎?希望那些所謂的大牛能反省下。也希望能警醒到各位學程式設計的小夥伴。 今天給大家秀的肌肉就是70行程式碼搞定俄羅斯方塊,效果圖如下:

俄羅斯方塊遊戲

俄羅斯方塊小遊戲 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/qq_26239525/article/details/82431921 研一時寫的俄羅斯方塊小遊戲,C++程式,程式碼還有很多值得優化的地方,歡迎交流。