亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? readme.txt

?? 很好的俄羅斯方塊
?? TXT
字號:
一點說明:

    夢想寫出完美的程序是每個程序員一生的追求,也許我就是在這個追求的過程中吧。總體感覺搞笑俄羅斯方塊是個做得很爛的產品,因為其實我本人并不太喜歡玩游戲,對游戲的感覺也不如那些骨灰級玩家們好,更談不上做好它了。所以搞笑俄羅斯方塊枉叫搞笑俄羅斯方塊。據不完全的統計,這個程序竟然在網絡里被下載了將近一萬多份,向我來信索取源碼的朋友也有將250人。其中對我的幫助當然很大。在此謝謝大家。
    這份代碼是經過重新整理了以后的,并且附加上這份說明,希望能夠對大家有所幫助。也許在以后的閱讀中您就會發現:這些程序真是做的爛,風格不好,方法不當,所以希望閱讀者能夠多扔雞蛋:)扔死為止(hehe) email:yousp@yeah.net。同時也希望這份開放的源代碼能夠繼續做下去,畢竟還是有那么多喜歡小游戲的朋友。

游晶
http://www.cxlife.com
2001年10月9日 凌晨 南昌大學


下邊是關于源代碼的說明:(感謝 Mu Gen 不斷的提問題,下邊是許多關于他的問題的回答)

(1)  我的俄羅斯方塊的具體原理是這樣的:(從源程序里貼了部分講解,用Delphi寫的)

//---------------------------------------------------------------------
type
   TBlockCell=record  <---- 表示每一個方快,其中包含兩種信息,一種是顏色信息,
      Empty: Boolean; <---- 另外一種表示的是,該位置是空還是實。如:
      Color: TColor;
   end;

1 1 0 0                   1 1 1 1
1 1 0 0                   0 0 0 0
0 0 0 0                   0 0 0 0
0 0 0 0  表示的是一個方快  0 0 0 0  表示的是一橫
當然這里顏色值我就沒有寫出來了,每一個位置都是一個 TBlockCell 類型的數組單元。


//---------------------------------------------------------------------
type
  TBoxArray  = Array [1..MLen,1..MLen] of TBlockCell;      //單個方塊對應的數組
  TMapData   = Array [1..MapWid,1..MapHei] of TBlockCell;  //當前記錄

前邊介紹的是方塊數組,而TMapData 表示的則是背景數組:
背景數組其實和 TBoxArray 是一樣的,只不過大小和功能有點不一樣。
TBoxArray 是動的,而 TMapData 是靜止的。TMapData中同樣也是每一個格子表示是否為空,
外加顏色信息。
開始的時候背景里完全為空:

0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
……   ……     ……
……   ……     ……
……   ……     ……
……   ……     ……
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 

當第一個方塊出現的時候,情形是這樣的:

0 0 0 1 1 x x 0 0 0 
0 0 0 1 1 x x 0 0 0
0 0 0 x x x x 0 0 0
0 0 0 x x x x 0 0 0
……   ……     ……
……   ……     ……
……   ……     ……
……   ……     ……
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
( 1 表示的是方快數組里,不為空的,x 表示為空的 )

注意這個時候我還沒有改變 TMapData 即背景,我只是單純的判斷是否該方快數組位置以下的,
在背景數組里的值是否為 1 ,為 1 就表示不能下降了,下邊有物體擋住了。
如果為 1 如下:

0 0 0 1 1 x x 0 0 0 
0 0 0 1 1 x x 0 0 0
0 0 0 1 x x x 0 0 0
0 0 0 x x x x 0 0 0
……   ……     ……
……   ……     ……
……   ……     ……
……   ……     ……
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 

那么這個方快就被擋在原來的位置,把它寫到 TMapData 數組里就可以,然后開始一個新的循環。

寫完之后如下:
0 0 0 1 1 0 0 0 0 0 
0 0 0 1 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
……   ……     ……
……   ……     ……
……   ……     ……
……   ……     ……
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 

當然我這里講的很簡單,里邊有很多細節問題。最重要的是:

   a 坐標變換 b 方快旋轉(矩陣旋轉變換) 
   c 最好把方快和背景分別寫成類(我沒有實現,當然我很想實現)


(2)  使用 CanGo 函數判斷是否可以向 x,y 位置移動

這個函數判斷是否可以將方快數組移動到背景數組的 X,Y 位置!
	下邊直接在程序上解釋:

======= 2001-09-28 15:39:00 您在來信中寫道:=======

function  CanGo(X,Y: Integer;B: TBoxArray): Boolean;
var
  i,j: Integer;
  Flag: Boolean;
begin
  if (X<1) or (X>MapWid) or  //判斷是否出了邊界,1 到 MapWid ……
     (Y<1) or (Y>MapHei) then
     begin
       CanGo := false;       //如果指定的 X,Y不在背景數組內,不可以移動到此位置
       Exit;
     end;

  Flag := true;
  for i := X to X+MLen-1 do  //從背景數組的 X,Y位置開始判斷,是否方塊和背景同一位置有非空塊
    for j := Y to Y+MLen-1 do
    begin
	  // 如果 Map 的 [i,j] 位置不為空 并且 方塊數組的[i-X+1,j-Y+1] 位置不為空 那么不能將方快移動到這個位置 
      if (Map[i,j].Empty <>EmptyBlock{true}) and (B[i-X+1,j-Y+1].Empty <>EmptyBlock{=true}) then
        Flag := false;
    end;
  CanGo := Flag;
end;

= = = = 0 0 0 0 0 
b b b b 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 

= = = = 表示當前方塊,如果要下降,
將當前的 X 不變 ,y + 1 做測試:
如當前 x=1 y=1 那么要下降的話就測試 x=1,y=2位置,如圖中的 b b b b 

這個時候就可以發現,= = = =  和 b b b b 都不為空,其實就是要移動到的位置已經被占用了,
所以就被擋住了!

(3) 關于如何做方塊的旋轉

旋轉的時候,復制當前的方快數組到另外一個B數組,用該旋轉后的變換數組去和背景數組比較,
如果這個時候有沖突,我就不做旋轉了,否則就進行旋轉。
	掃描數組的過程有兩個:
	function  GetWidth(B: TBoxArray): Integer;
	function  GetHeight(B: TBoxArray): Integer;
	分別用來獲得一個方快的高度和寬度,因為4*4數組里,往往不是滿的如:
	1 1 0 0 
    1 1 0 0 
    0 0 0 0 
    0 0 0 0 的寬度和高度都為2
    還有一個 ScanEmptyLine 過程掃描整個背景數組,看有沒有添滿1的行,這樣的行可以消掉,然后
刷新屏幕,實現消行效果。

(4) 為什么獲取 5,6 號方塊高度和寬度時必須修正?

  SetBoxArray(Box[5],1,'1000');
  SetBoxArray(Box[5],2,'1100');
  SetBoxArray(Box[5],3,'0100');
  SetBoxArray(Box[5],4,'0000');

  SetBoxArray(Box[6],1,'0100');
  SetBoxArray(Box[6],2,'1100');
  SetBoxArray(Box[6],3,'1000');
  SetBoxArray(Box[6],4,'0000');

這兩個是 5號和6號方塊,你說這個樣子他們的高度和寬度分別為多少?
應該分別是: 3 和 2 吧。
但是我的GetHeight算法中是這樣處理:掃描每一行,看有多少個1 ,最多的1的個數為高度或者寬度,
但顯然這個方法對 5號和6號方塊不適用,所以必須修正。

怎樣修正代碼里就很明白了!

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品国产更新| 欧美成人三级在线| 狠狠色狠狠色综合| 国产区在线观看成人精品| 99免费精品视频| 日韩av电影天堂| 国产精品美女久久福利网站| 中文字幕av免费专区久久| 岛国精品在线播放| 蓝色福利精品导航| 日韩理论电影院| 久久久久久久久久看片| 91极品美女在线| 成人av网站大全| 成人aaaa免费全部观看| 精品亚洲欧美一区| 天天综合色天天综合色h| 亚洲精品视频在线观看网站| 最新国产精品久久精品| 久久精品人人爽人人爽| 在线观看视频91| 欧美日韩黄色一区二区| 日韩欧美成人一区二区| 国产网红主播福利一区二区| 久久精品一区二区| 国产欧美日韩在线看| 蓝色福利精品导航| 看国产成人h片视频| 国产精品久久久久久户外露出| 色88888久久久久久影院野外| 欧美色手机在线观看| 国产亚洲精久久久久久| 国产精品国产三级国产aⅴ中文| 日本一二三不卡| 国产片一区二区三区| 中文字幕欧美国产| 久久一留热品黄| 亚洲日本成人在线观看| 一区二区三区在线播放| 午夜欧美一区二区三区在线播放| 蜜桃视频一区二区| 国产成人精品一区二区三区四区 | 国产午夜精品久久| 欧美成人一级视频| 中文字幕不卡在线| 亚洲高清视频中文字幕| 久久精品国产99国产精品| 天堂精品中文字幕在线| 国产麻豆成人传媒免费观看| 国产成人欧美日韩在线电影| 色88888久久久久久影院野外| 欧美日韩一级黄| 国产午夜精品久久久久久久| 亚洲视频免费在线| 久久精品99国产精品| 高清成人免费视频| 欧美一级免费大片| 亚洲欧美日韩综合aⅴ视频| 久久精品72免费观看| 欧美色电影在线| 亚洲综合网站在线观看| 99精品视频一区二区三区| 国产日韩欧美综合一区| 亚洲精品大片www| 成人亚洲一区二区一| 日韩欧美视频一区| 亚洲r级在线视频| 91天堂素人约啪| 日韩精品中午字幕| 天天色图综合网| 在线观看区一区二| 亚洲精品视频在线观看免费| 成人黄动漫网站免费app| 国产午夜久久久久| 国产在线精品一区二区不卡了 | 色视频一区二区| 亚洲欧美aⅴ...| 91视频91自| 亚洲综合色视频| 欧美网站一区二区| 午夜精品123| 在线不卡免费av| 韩国毛片一区二区三区| 国产亚洲精品aa| 国产一区二区精品久久| 国产亚洲制服色| 成人高清视频在线观看| 一区二区高清免费观看影视大全| 在线精品视频免费观看| 日本三级韩国三级欧美三级| 日韩精品在线网站| 成人精品视频一区| 一区二区高清视频在线观看| 日韩欧美的一区| 国产精品影视网| 日本一区二区三区四区| 色综合久久天天| 亚洲成av人片一区二区梦乃| 久久综合狠狠综合久久激情 | 日韩专区一卡二卡| 国产日韩欧美电影| 欧美色区777第一页| 国产精品一区专区| 亚洲va欧美va人人爽午夜| 欧美电影免费观看完整版| 国产91高潮流白浆在线麻豆| 亚洲午夜电影在线观看| 国产欧美日韩综合| 欧美va亚洲va| 正在播放一区二区| 欧美一级黄色片| 在线精品亚洲一区二区不卡| 国产经典欧美精品| 麻豆精品新av中文字幕| 一区av在线播放| 2021国产精品久久精品| 欧美一区二区三区白人| 欧美色综合久久| 在线免费观看日本一区| 99精品欧美一区二区三区小说 | 精品成人一区二区三区四区| 欧美日韩国产影片| 色呦呦国产精品| 97精品久久久午夜一区二区三区| 国产成人午夜精品影院观看视频| 一区二区三区国产精品| 最新中文字幕一区二区三区 | 国产精品久久久久久久久久免费看 | 精品国产sm最大网站免费看| 欧美日韩和欧美的一区二区| 在线观看日韩精品| eeuss鲁片一区二区三区| 国产精品一区在线| 国产酒店精品激情| jvid福利写真一区二区三区| 成人午夜电影网站| 99久久久久久| 色综合久久99| 欧美精选午夜久久久乱码6080| 91精品国产综合久久福利软件| 欧美一级免费观看| 精品国一区二区三区| 久久精品人人做人人爽97| 精品av久久707| 天堂成人国产精品一区| 日本特黄久久久高潮| 丁香婷婷深情五月亚洲| 91在线视频免费观看| 欧美一区二区在线视频| 久久九九影视网| 久久99热这里只有精品| 一本一本大道香蕉久在线精品| 日韩免费一区二区| 亚洲最色的网站| 麻豆国产欧美日韩综合精品二区 | 亚洲精品视频一区二区| 国产精品91xxx| 日韩一区二区三区高清免费看看| 欧美激情在线一区二区三区| 免费在线一区观看| 欧美视频中文字幕| 国产精品国产自产拍高清av王其| 日韩高清不卡在线| 欧美一区二区福利在线| 爽好久久久欧美精品| 欧美三级电影在线看| 亚洲成av人片www| 日韩av电影天堂| 欧美群妇大交群的观看方式| 色婷婷综合久久久久中文一区二区| 91精品91久久久中77777| 亚洲欧美韩国综合色| 亚洲欧美福利一区二区| 日韩电影在线免费观看| 午夜精品视频一区| 成人黄动漫网站免费app| 久久久久久久综合日本| 久久狠狠亚洲综合| 中文字幕免费不卡| 国产精品中文字幕日韩精品 | 国产欧美va欧美不卡在线| 国产精品中文欧美| 中文字幕成人av| 国产精品一区二区久久精品爱涩| 欧美一级在线观看| 国产成人午夜视频| 综合色天天鬼久久鬼色| 一本一道综合狠狠老| 视频在线观看91| 欧美三级电影一区| 亚洲第一福利一区| 日韩在线观看一区二区| 欧美成人精品1314www| 捆绑调教一区二区三区| 欧美激情一区不卡| 欧洲精品一区二区三区在线观看| 亚洲精品中文字幕乱码三区| 欧美精品18+| 99久久99久久精品免费看蜜桃 | 国产精品久久毛片av大全日韩|