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

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

?? readme.txt

?? 搞笑俄羅斯方塊這個程序由delphi制作而成。
?? 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一区二区三区免费野_久草精品视频
欧美综合天天夜夜久久| 欧美精品免费视频| 7878成人国产在线观看| 一区二区三区在线视频播放| 成人激情免费网站| 欧美在线观看一区| 亚洲国产一区二区三区青草影视| 在线观看免费亚洲| 青青草伊人久久| 国产精品久久久久久久久久免费看 | 日本不卡不码高清免费观看| 亚洲国产岛国毛片在线| 欧美mv日韩mv| 正在播放亚洲一区| 色综合久久综合中文综合网| 国产成a人亚洲| 久久av中文字幕片| 天天色 色综合| 亚洲精品久久7777| 国产精品网站导航| 国产日韩精品久久久| 精品国产乱码久久久久久久久| 欧美日韩国产免费一区二区| 99久久99精品久久久久久| 国产高清不卡一区| 国产一区二区日韩精品| 日本伊人午夜精品| 亚洲成av人片一区二区三区| 亚洲乱码中文字幕综合| 国产精品欧美一级免费| 国产亚洲欧美中文| 久久丝袜美腿综合| 日韩欧美成人一区| 日韩限制级电影在线观看| 欧美精品123区| 欧美日韩一区二区三区在线看| 色综合久久综合网97色综合| av亚洲精华国产精华| 不卡视频一二三四| 不卡高清视频专区| www.亚洲激情.com| 99久久免费精品高清特色大片| 成人免费毛片片v| 成人av在线影院| 91蝌蚪porny九色| 色一情一乱一乱一91av| 色婷婷精品大视频在线蜜桃视频| 一本一道久久a久久精品| 色综合久久中文综合久久97| 在线视频一区二区三区| 精品视频在线看| 欧美伦理影视网| 8x8x8国产精品| 精品久久久久一区二区国产| 久久久久久久综合| 国产精品欧美一区喷水| 成人永久aaa| 国产精品91xxx| 欧美日韩一区二区三区视频 | 在线综合+亚洲+欧美中文字幕| 懂色av中文字幕一区二区三区 | 欧美电影精品一区二区| 欧美电影一区二区三区| 欧美日韩国产在线播放网站| ww亚洲ww在线观看国产| 亚洲中国最大av网站| 亚洲成人av在线电影| 蜜桃视频在线观看一区二区| 老司机午夜精品| 国产美女主播视频一区| 91在线看国产| 6080日韩午夜伦伦午夜伦| 精品少妇一区二区三区视频免付费| 久久精品水蜜桃av综合天堂| 亚洲人成7777| 免费观看日韩电影| 高清久久久久久| 7777女厕盗摄久久久| 久久久久久久综合| 亚洲成人激情自拍| 国产乱码精品一区二区三 | 成人免费看片app下载| 色噜噜狠狠色综合中国| 日韩精品一区二区三区在线播放| 国产精品美女久久久久久2018| 亚洲午夜电影在线观看| 韩日av一区二区| 在线日韩av片| 国产午夜精品美女毛片视频| 亚洲一区二区在线免费观看视频| 蜜桃视频在线观看一区| 色婷婷狠狠综合| 26uuu亚洲| 午夜精品久久久久久久蜜桃app| 国产美女精品人人做人人爽| 欧美性高清videossexo| 日本一区二区三区免费乱视频 | 精品亚洲国产成人av制服丝袜| 99久久国产免费看| 精品久久一区二区三区| 亚洲韩国精品一区| youjizz国产精品| 精品国产一区二区三区av性色| 亚洲精品va在线观看| 国产福利91精品| 欧美一激情一区二区三区| 亚洲欧美日韩国产手机在线| 国产盗摄一区二区三区| 日韩三级在线免费观看| 一区二区三区 在线观看视频| 国产精品一区二区你懂的| 亚洲一区视频在线| 在线一区二区三区做爰视频网站| 日日夜夜精品免费视频| 国产视频一区二区在线观看| 欧美a级一区二区| 在线播放日韩导航| 日韩经典中文字幕一区| 欧美调教femdomvk| 国产精品影视在线| 777亚洲妇女| 国产成人av网站| 精品国产污污免费网站入口| 国产sm精品调教视频网站| 国产精品一区二区三区四区 | 肉色丝袜一区二区| 日本高清不卡视频| 亚洲图片激情小说| 成人免费看黄yyy456| 国产亚洲婷婷免费| 精品亚洲成a人| 日韩午夜中文字幕| 久久精品国产澳门| 欧美α欧美αv大片| 麻豆精品一区二区| 亚洲国产成人va在线观看天堂| ...中文天堂在线一区| 欧美三级电影在线观看| 亚洲视频综合在线| 色哟哟国产精品免费观看| 亚洲欧美日韩人成在线播放| 色哟哟欧美精品| 亚洲一区二区在线播放相泽| 欧洲精品在线观看| 午夜影院久久久| 91精品国产福利| 青青草国产精品97视觉盛宴| 欧美成人精品3d动漫h| 精品一区二区三区视频在线观看| 精品91自产拍在线观看一区| 国产高清不卡一区| 国产精品久久久久久久久免费桃花| 成人av网站在线| 亚洲永久精品大片| 在线成人午夜影院| 激情五月婷婷综合网| 国产校园另类小说区| 99视频一区二区| 亚洲国产精品久久久男人的天堂 | 精品国产制服丝袜高跟| 国产在线日韩欧美| 日本一区二区三级电影在线观看| jlzzjlzz国产精品久久| 午夜在线成人av| 久久久久国产精品人| 99精品视频中文字幕| 《视频一区视频二区| 国产精品久久久久精k8| 亚洲精品你懂的| 最新成人av在线| 中文字幕国产精品一区二区| 精品99久久久久久| 亚洲欧美另类小说视频| 色哟哟国产精品| 成人美女视频在线观看| 亚洲午夜成aⅴ人片| 国产夜色精品一区二区av| 免费在线观看精品| 日本韩国精品一区二区在线观看| 99精品国产视频| 欧美日韩高清一区二区三区| 欧美亚洲另类激情小说| 337p亚洲精品色噜噜噜| 精品久久久久久久久久久久久久久久久 | 成人黄色国产精品网站大全在线免费观看| 成人av电影在线| 欧洲av一区二区嗯嗯嗯啊| 4438x亚洲最大成人网| 欧美一区午夜视频在线观看| 欧美肥大bbwbbw高潮| 91麻豆精品国产91久久久久久 | 99视频精品免费视频| 久久精品国产免费| 9人人澡人人爽人人精品| youjizz久久| 日韩午夜三级在线| 欧美一级理论性理论a| 精品国产免费久久 | 日本视频一区二区| 久久9热精品视频|