freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言編寫的俄羅斯方塊-資料下載頁

2025-09-25 17:43本頁面
  

【正文】 相當(dāng)于一開始就給游戲板左右和下方加了個“邊”。所有的形狀都不能夠移入這個“邊”,否則將發(fā)生沖突?! ‖F(xiàn)在我們可以開始討論如何判斷一個形狀向左、向右和向下移動的可能性了。先說個概念,“當(dāng)前形狀”是指那個正在下落還沒有落到底的那個形狀。如果當(dāng)前形狀向左移動,不與游戲板現(xiàn)有狀態(tài)發(fā)生沖突,則可以向左移動。具體做法是:先假設(shè)當(dāng)前形狀已經(jīng)向左移動了,判斷此時是否與游戲板現(xiàn)有狀態(tài)發(fā)生沖突。如果不發(fā)生沖突,則可以向左移動。否則,不可以向左移動?! ∨袛嗨饕枮镾hapeIndex的形狀在坐標(biāo)(x,y)是否與游戲板當(dāng)前狀態(tài)發(fā)生沖突的代碼如下。我把詳細(xì)的說明加在這段代碼中。enumboolConfilict(intShapeIndex,intx,inty){inti。/*對組成索引號為ShapeIndex的形狀的四個方塊依次判斷*/for(i=0。i=7。i++,i++)/*i分別取0,2,4,6*/{/*如果四個方塊中有任何一個方塊的x坐標(biāo)小于1或大于10,表示超出左邊界或右邊界。此時,發(fā)生沖突。*/if(shapes[ShapeIndex].xy[i]+x1||shapes[ShapeIndex].xy[i]+x10)returnTrue。/*如果四個方塊中某個方塊的y坐標(biāo)小于1,表示整個形狀還沒有完全落入游戲板中。此時,沒有必要對這個方塊進(jìn)行判斷。*/if(shapes[ShapeIndex].xy[i+1]+y1)continue。/*如果四個方塊中有任何一個方塊與游戲板當(dāng)前狀態(tài)發(fā)生沖突,則整個形狀在(x,y)處與游戲板當(dāng)前狀態(tài)沖突*/if(board[shapes[ShapeIndex].xy[i]+x][shapes[ShapeIndex].xy[i+1]+y])returnTrue。}/*四個方塊中沒有任何一個方塊與游戲板當(dāng)前狀態(tài)發(fā)生沖突,則整個形狀在(x,y)處沒有與游戲板當(dāng)前狀態(tài)沖突*/returnFalse。}對以上代碼附加說明如下:  shapes[ShapeIndex].xy[i](其中i等于0,2,4,6)表示組成索引號為ShapeIndex的形狀的某個方塊的x相對坐標(biāo)。(i等于0時,表示第1個方塊的x相對坐標(biāo);i等于2時,表示第2個方塊的x相對坐標(biāo);i等于4時,表示第3個方塊的x相對坐標(biāo);i等于6時,表示第4個方塊的x相對坐標(biāo)。)  shapes[ShapeIndex].xy[i](其中i等于1,3,5,7)表示組成索引號為ShapeIndex的形狀的某個方塊的y相對坐標(biāo)。(i等于1時,表示第1個方塊的y相對坐標(biāo);i等于3時,表示第2個方塊的y相對坐標(biāo);i等于5時,表示第3個方塊的y相對坐標(biāo);i等于7時,表示第4個方塊的y相對坐標(biāo)。)  shapes[ShapeIndex].xy[i]+x(其中i等于0,2,4,6)表示索引號為ShapeIndex的形狀的坐標(biāo)為(x,y)時,組成該形狀的某個方塊的x實(shí)際坐標(biāo)。(i等于0時,表示第1個方塊的x實(shí)際坐標(biāo);i等于2時,表示第2個方塊的x實(shí)際坐標(biāo);i等于4時,表示第3個方塊的x實(shí)際坐標(biāo);i等于6時,表示第4個方塊的x實(shí)際坐標(biāo)。)  shapes[ShapeIndex].xy[i]+y(其中i等于1,3,5,7)表示索引號為ShapeIndex的形狀的坐標(biāo)為(x,y)時,組成該形狀的某個方塊的y實(shí)際坐標(biāo)。(i等于1時,表示第1個方塊的y實(shí)際坐標(biāo);i等于3時,表示第2個方塊的y實(shí)際坐標(biāo);i等于5時,表示第3個方塊的y實(shí)際坐標(biāo);i等于7時,表示第4個方塊的y實(shí)際坐標(biāo)。)現(xiàn)在來看看這句是什么意思吧。board[shapes[ShapeIndex].xy[i]+x][shapes[ShapeIndex].xy[i+1]+y]可以這樣理解,把上面一句分開來看::ActualX=shapes[ShapeIndex].xy[i]+x;/*其中x為0,2,4,6*/表示某個方塊實(shí)際的x坐標(biāo)。ActualY=[shapes[ShapeIndex].xy[i+1]+y;表示某個方塊實(shí)際的y坐標(biāo)。board[ActualX][ActualY]就是與某個方塊坐標(biāo)相同處的游戲板的標(biāo)志。如果此標(biāo)志不為0(為1),表示這個方塊與游戲板發(fā)生沖突。如果此標(biāo)志為0,表示這個方塊沒有與游戲板發(fā)生沖突。這段寫的比較長,但是不是特別難理解。游戲中很多地方都用到了這種相對坐標(biāo)向?qū)嶋H坐標(biāo)的轉(zhuǎn)換方式,看懂了這一段對理解其他部分的代碼很有幫助。仔細(xì)看過這段代碼后,你可能會提一個問題:不是已經(jīng)在游戲板的左右兩邊都加了“邊”了嗎,為什么還要加下面這個對x坐標(biāo)的判斷呢?/*如果四個方塊中有任何一個方塊的x坐標(biāo)小于1或大于10,表示超出左邊界或右邊界。此時,發(fā)生沖突。*/if(shapes[ShapeIndex].xy[i]+x1||shapes[ShapeIndex].xy[i]+x10)returnTrue。這是因?yàn)橛幸环N特殊情況,如下圖所示:■■■23456789101■□□□□□□□□□這在當(dāng)前形狀剛出來的時候,是可能發(fā)生的。但是我們只給游戲板2□□□□□□□□□□加了一層“邊”。對于這個形狀的最左邊的那個方塊將失去判斷,3□□□□□□□□□□如果不予理會,這個形狀將會“掛”在游戲板的左上角!當(dāng)初我也4□□□□□□□□□□沒有想到這一點(diǎn),后來發(fā)現(xiàn)會有形狀“掛”在最頂層,而導(dǎo)致游戲5□□□□□□□□□□提前退出。發(fā)現(xiàn)了這個問題。6□□□□□□□□□□7□□□□□□□□□□8□□□□□□□□□□加了這個判斷后,游戲板的左右兩個“邊”對沖突的判斷就是去意9□□□□□□□□□□義了。因?yàn)闆]有這兩個“邊”,對于沖突的判斷也不會出錯。不過10□□□□□□□□□□為了程序易于理解,還是保留了游戲板的左右兩個“邊”。11□□□□□□□□□□12□□□□□□□□□□13□□□□□□□□□□14□□□□□□□□□□15□□□□□□□□□□16□□□□□□□□□□17□□□□□□□□□□18□□□□□□□□□□19□□□□□□□□□□20□□□□□□□□□
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1