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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? readme.txt

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

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

游晶

2001年10月9日 凌晨 南昌大學


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

(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 類型的數(shù)組單元。


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

前邊介紹的是方塊數(shù)組,而TMapData 表示的則是背景數(shù)組:
背景數(shù)組其實和 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 

當?shù)谝粋€方塊出現(xiàn)的時候,情形是這樣的:

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 表示的是方快數(shù)組里,不為空的,x 表示為空的 )

注意這個時候我還沒有改變 TMapData 即背景,我只是單純的判斷是否該方快數(shù)組位置以下的,
在背景數(shù)組里的值是否為 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 數(shù)組里就可以,然后開始一個新的循環(huán)。

寫完之后如下:
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 

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

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


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

這個函數(shù)判斷是否可以將方快數(shù)組移動到背景數(shù)組的 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不在背景數(shù)組內(nèi),不可以移動到此位置
       Exit;
     end;

  Flag := true;
  for i := X to X+MLen-1 do  //從背景數(shù)組的 X,Y位置開始判斷,是否方塊和背景同一位置有非空塊
    for j := Y to Y+MLen-1 do
    begin
	  // 如果 Map 的 [i,j] 位置不為空 并且 方塊數(shù)組的[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 

這個時候就可以發(fā)現(xiàn),= = = =  和 b b b b 都不為空,其實就是要移動到的位置已經(jīng)被占用了,
所以就被擋住了!

(3) 關(guān)于如何做方塊的旋轉(zhuǎn)

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

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

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本在线天堂| 日韩avvvv在线播放| 久久爱另类一区二区小说| 国产福利91精品一区二区三区| 一区精品在线播放| 精品黑人一区二区三区久久| 国产自产高清不卡| 亚洲一区二区综合| 久久久综合激的五月天| 色综合久久九月婷婷色综合| 亚洲午夜久久久久久久久电影网| 欧美一卡在线观看| 一本到高清视频免费精品| 久久99久久精品欧美| 亚洲成a人片在线不卡一二三区| 日韩欧美国产麻豆| 欧美日韩精品一区二区三区| 国产99久久久精品| 蜜臀久久久99精品久久久久久| 国产精品国产自产拍在线| 日韩欧美在线不卡| 欧美精品一级二级三级| 欧美最新大片在线看| 色综合久久88色综合天天免费| 免费成人av在线| 日本美女一区二区| 亚洲无人区一区| 日韩黄色片在线观看| 午夜欧美在线一二页| 亚洲免费观看高清完整版在线观看| 国产色综合久久| 欧美韩国日本综合| 亚洲综合视频在线| 亚洲欧洲日产国码二区| 1024亚洲合集| 亚洲国产视频一区| 亚洲自拍偷拍九九九| 日韩精品电影一区亚洲| 久久亚洲影视婷婷| 国产欧美日韩视频一区二区| 国产精品欧美极品| 亚洲国产成人av| 国产一区二区三区精品视频| 丰满少妇久久久久久久| 欧美三级资源在线| 欧美zozozo| 亚洲一线二线三线视频| 麻豆91在线看| 91久久精品网| 亚洲另类春色校园小说| 国产精品国产a级| 在线不卡中文字幕播放| 亚洲精品欧美综合四区| 欧美午夜精品久久久| 亚洲成人你懂的| 精品国产3级a| 波多野洁衣一区| 天天综合色天天| 久久久www成人免费无遮挡大片 | 免费在线看成人av| 91精品国产91综合久久蜜臀| 国产高清久久久久| 亚洲欧美日韩国产一区二区三区| 福利视频网站一区二区三区| 精品三级av在线| 丝袜脚交一区二区| 欧美一区二区性放荡片| 亚洲午夜三级在线| 欧美久久久久免费| 毛片不卡一区二区| 久久久久一区二区三区四区| 国产乱码字幕精品高清av| 欧美一级片在线观看| 经典三级视频一区| 中文字幕乱码亚洲精品一区| 日本91福利区| 3d动漫精品啪啪1区2区免费| 一区二区免费在线| 久久综合九色综合欧美98| youjizz国产精品| 日韩成人精品在线观看| 国产亚洲综合色| 884aa四虎影成人精品一区| 精久久久久久久久久久| 亚洲三级在线免费观看| 5月丁香婷婷综合| 成人av在线播放网址| 午夜精品久久久久久久久久久| 久久久国产精品午夜一区ai换脸| 91久久精品国产91性色tv| 精品一区二区在线播放| 亚洲精品国产品国语在线app| 91精品国产一区二区三区蜜臀| 成人深夜福利app| 青草av.久久免费一区| 亚洲国产视频一区二区| 亚洲精品精品亚洲| **欧美大码日韩| 欧美精彩视频一区二区三区| 日韩美女在线视频| 欧美精品1区2区3区| 欧美亚洲国产一区二区三区va| 成人免费视频网站在线观看| 免费观看在线综合色| 亚洲午夜羞羞片| 亚洲国产一区二区a毛片| 亚洲一区二区成人在线观看| 中文字幕亚洲在| 亚洲国产一区二区视频| 丝袜美腿成人在线| 精品一区二区综合| 国产成人av影院| 成人av先锋影音| 日本韩国一区二区| 欧美精品久久99久久在免费线 | 色综合欧美在线视频区| 欧亚一区二区三区| 91影视在线播放| 欧美色精品在线视频| 69堂精品视频| 国产精品嫩草影院av蜜臀| 成人免费在线视频| 青青草原综合久久大伊人精品 | 国产suv一区二区三区88区| 国产91精品精华液一区二区三区| 成人av免费观看| 欧美日本韩国一区二区三区视频| 精品国产青草久久久久福利| 日本一二三不卡| 午夜视频一区二区三区| 九九**精品视频免费播放| 成人性视频网站| 日韩一区二区在线观看视频播放| 久久蜜桃av一区二区天堂| 亚洲黄色免费网站| 国产专区欧美精品| 91国产视频在线观看| 久久久久综合网| 奇米影视在线99精品| 欧美午夜片在线看| 成人欧美一区二区三区| 东方aⅴ免费观看久久av| 精品区一区二区| 毛片av一区二区| 91精品国产91久久综合桃花| 亚洲成人一二三| 7777精品伊人久久久大香线蕉完整版| 26uuu国产日韩综合| 久久91精品国产91久久小草| 欧美一区二区大片| 老鸭窝一区二区久久精品| 欧美疯狂性受xxxxx喷水图片| 亚洲卡通欧美制服中文| 欧美另类videos死尸| 日本成人在线视频网站| 日韩精品一区二| 国产精品99久久久久久久vr| 久久久久久毛片| 高清国产一区二区| 中文字幕在线不卡| 欧美日韩国产综合久久| 免费在线欧美视频| 中文字幕精品一区二区精品绿巨人 | 中文一区二区在线观看| 成人手机电影网| 亚洲综合成人在线视频| 欧美一区二区成人| 9i在线看片成人免费| 蜜臂av日日欢夜夜爽一区| 精品日韩一区二区三区免费视频| 韩国av一区二区| 亚洲男人电影天堂| 精品国产乱码久久久久久1区2区| 成人久久久精品乱码一区二区三区| 亚洲精品videosex极品| 337p粉嫩大胆色噜噜噜噜亚洲| 91丝袜美腿高跟国产极品老师| 久久综合综合久久综合| 亚洲国产wwwccc36天堂| 国产欧美一区二区三区在线老狼| 555夜色666亚洲国产免| 色噜噜狠狠成人中文综合| 国产99精品国产| 激情文学综合网| 国产九色sp调教91| 国产精品影视网| 成人动漫中文字幕| 91日韩在线专区| 在线这里只有精品| 欧美日产在线观看| 国产欧美精品区一区二区三区| 国产精品美女久久久久av爽李琼| 国产精品女主播av| 蜜桃精品在线观看| 大尺度一区二区| 日韩三级视频中文字幕| 中文字幕+乱码+中文字幕一区| 亚洲自拍欧美精品| 国产成人午夜片在线观看高清观看| 91在线精品一区二区|