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

正文內(nèi)容

二d賽車游戲的設(shè)計與實現(xiàn)畢業(yè)設(shè)計-資料下載頁

2025-06-22 19:13本頁面
  

【正文】 慮 到 執(zhí) 行 速 度 , 位 移 與 加 減 法 比 做 乘 除 法 要 快 的 多 , 游 戲 要 考 慮 到 速 率 , 所 以 , 盡量 用 快 速 的 方 法 。 顏 色 識 別 算 法顏 色 識 別 算 法 在 此 游 戲 中 被 頻 繁 用 到 , 這 是 一 個 非 常 好 用 的 算 法 , 它 沒 有 非 常 復(fù)雜 的 原 理 , 只 是 讀 出 顏 色 值 , 然 后 進 行 判 別 , 它 的 速 度 也 很 快 , 對 在 窗 口 內(nèi) 的 碰 撞 檢測 十 分 有 效 , 下 面 是 它 的 具 體 實 現(xiàn) :int Color_Scan(int x1, int y1, int x2, int y2, UCHAR scan_start, UCHAR scan_end, UCHAR *scan_buffer, int scan_lpitch){// this function implements a crude collision technique// based on scanning for a range of colors within a rectangle if (x1 = screen_width) x1=screen_width1。elseif (x1 0) x1=0。if (x2 = screen_width) x2=screen_width1。計 算 機 信 息 工 程 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書19elseif (x2 0) x2=0。// now ycoordsif (y1 = screen_height) y1=screen_height1。elseif (y1 0) y1=0。if (y2 = screen_height) y2=screen_height1。elseif (y2 0) y2=0。// scan the regionscan_buffer +=y1*scan_lpitch。for (int scan_y=y1。 scan_y=y2。 scan_y++) { for (int scan_x=x1。 scan_x=x2。 scan_x++) { if (scan_buffer[scan_x] = scan_start amp。amp。 scan_buffer[scan_x] = scan_end ) return(1)。 } // end for x // move down a line scan_buffer+=scan_lpitch。 } // end for y//a=scan_buffer[x2]。//sprintf(s,%d,a)。//Draw_Text_GDI(s,8,8,RGB(255,255,255),lpddsback)。// return failurereturn(0)。} // end Color_Scan這 個 函 數(shù) 使 用 時 須 要 的 參 數(shù) 有 很 多 , 如 下 : 需 要 掃 描 的 區(qū) 域 , 掃 描 區(qū) 域 是 一 個 矩 形 , 需 要 傳 入 矩 形 的 左 上 頂 點 坐 標 和 右 下計 算 機 信 息 工 程 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書20頂 點 坐 標 , 即 參 數(shù) 列 表 中 的 x1,y1,x2,y2。 需 要 給 出 要 尋 找 的 顏 色 值 范 圍 即 scan_start 和 scan_end, 這 是 8 位 模 式 下的 狀 態(tài) , 它 的 數(shù) 據(jù) 也 是 應(yīng) 該 是 8 位 索 引 值 , 而 UCHAR 是 8 位 , 函 數(shù) 會 在 尋 找 范 圍 里 尋找 從 scan_start 到 scan_end 的 顏 色 , 如 果 找 到 則 返 回 1, 否 則 返 回 0。 UCHAR *scan_buffer 是 要 傳 入 一 個 指 向 表 面 的 指 針 , 通 常 是 指 向 后 備 緩 沖 表面 的 指 針 , 因 為 主 表 面 通 常 是 進 過 換 頁 而 來 的 , 換 頁 是 與 后 備 緩 沖 表 面 交 換 的 , 即 主表 面 顯 示 的 是 當 時 的 前 一 幀 的 狀 態(tài) , 無 法 對 當 前 狀 況 作 出 反 應(yīng) , 所 以 , 不 用 主 表 面 進行 顏 色 識 別 , 而 掃 描 離 屏 表 面 沒 有 任 何 意 義 , 因 為 離 屏 表 面 是 儲 存 位 圖 的 表 面 , 所 以也 不 用 離 屏 表 面 , 繪 圖 的 實 際 操 作 是 在 后 備 緩 沖 表 面 上 進 行 的 , 所 以 , 通 常 傳 入 指 向后 備 緩 沖 表 面 的 指 針 。 int scan_lpitch, 這 個 參 數(shù) 通 常 傳 入 的 是 lPitch( 或 back_lpitch, 這 兩 個的 只 是 一 樣 的 ) , 即 你 所 在 顯 示 模 式 的 水 平 內(nèi) 存 間 距 。 如 圖 33 所 示 , lPitch 是 該 顯示 模 式 中 每 行 上 的 字 數(shù) , 也 被 稱 為 步 幅 ( stride) 或 內(nèi) 存 寬 度 ( memory width) 。 這個 參 數(shù) 也 可 以 傳 入 一 個 具 體 的 值 , 如 果 當 時 的 顯 示 模 式 是 6404808, 那 么 , 該 模式 下 每 行 有 640 個 像 素 , 每 個 像 素 為 8 位 ( 或 者 說 一 個 字 節(jié) ) , 因 此 , 實 際 每 行 應(yīng) 該恰 為 640 個 字 節(jié) , 即 傳 入 的 值 為 640, 如 果 在 64048016 模 式 下 , 傳 入 的 值 是1280( 每 像 素 2 個 字 節(jié) 為 6402) 。 雖 然 可 以 傳 入 一 個 具 體 的 值 , 但 這 確 有 一 定 危 險 ,lPitch 可 以 是 任 何 值 , 視 VRAM 布 局 而 定 。 因 此 當 逐 行 訪 問 一 個 DirectDraw 顯 示 表 面內(nèi) 存 時 ( 這 里 訪 問 的 是 后 備 緩 沖 表 面 ) , 必 須 利 用 lPitch 移 到 下 一 行 , 而 不 是 用 像 素字 節(jié) 數(shù) 乘 寬 度 , 總 之 , 如 果 使 用 lPitch 來 進 行 內(nèi) 存 計 算 , 這 樣 , 所 寫 的 代 碼 就 總 是 安全 的 。計 算 機 信 息 工 程 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書21圖 33 訪 問 的 表 面該 函 數(shù) 一 開 始 就 對 傳 入 的 矩 形 的 頂 點 做 判 斷 , 保 證 掃 描 區(qū) 域 在 窗 口 范 圍 之 內(nèi) , 如果 矩 形 超 出 掃 描 范 圍 , 則 只 掃 描 在 窗 口 范 圍 里 的 矩 形 大 小 。 在 上 述 代 碼 中 , 對 x1 的越 界 操 作 為 “x1=0。”和 “x1=screen_width1?!?, 這 里 不 將 x1 置 為 screen_width 是有 理 由 的 , 分 辨 率 為 640480, 表 示 水 平 方 向 含 有 像 素 數(shù) 為 640 個 , 垂 直 方 向 像 素 數(shù)480 個 , 而 在 程 序 里 , 后 備 緩 沖 表 面 back_buffer 的 存 儲 是 從 0 開 始 的 , 所 以 , 當 x1為 screen_width 時 , 實 際 上 已 不 在 表 面 的 工 作 區(qū) 了 , 要 它 的 最 大 邊 界 是screen_width1, 其 他 坐 標 點 類 似 。接 下 來 該 函 數(shù) 開 始 逐 行 訪 問 后 備 緩 沖 表 面 的 內(nèi) 存 。 因 為 , 后 備 緩 沖 表 面 的 內(nèi) 存 實際 是 一 個 線 性 數(shù) 組 , 所 以 在 換 行 時 需 要 加 上 lPitch。上 面 所 列 出 的 顏 色 識 別 函 數(shù) 實 際 上 是 在 8 位 模 式 下 的 才 能 用 的 , 指 向 表 面 的 指 針定 義 為 UCHAR *scan_buffer, 這 是 一 個 指 向 UCHAR 的 指 針 , 而 UCHAR 是 8 位 , 正 巧 這個 表 面 所 儲 存 的 一 個 顏 色 值 是 一 個 8 位 索 引 值 , 所 以 , 在 查 找 對 應(yīng) 像 素 的 顏 色 時 , 指針 的 下 標 值 就 是 lPitch 的 整 數(shù) 倍 再 加 上 橫 坐 標 。這 個 函 數(shù) 不 能 在 十 六 位 模 式 下 工 作 , 但 是 如 果 要 在 十 六 位 模 式 下 進 行 顏 色 識 別 呢 ?T3DLIB1 函 數(shù) 庫 提 供 了 一 個 工 作 于 16 位 模 式 下 的 顏 色 識 別 算 法 : Color_Scan16( ) ,雖 然 本 游 戲 沒 有 用 到 , 但 還 是 要 說 明 一 下 。 Color_Scan16( ) 與 上 述 所 列 的 8 位 模 式下 的 函 數(shù) 的 實 現(xiàn) 原 理 基 本 相 同 , 不 同 的 只 是 在 顏 色 比 較 時 , 他 們 的 數(shù) 據(jù) 類 型 為USHORT( 16 位 ) , 查 找 時 只 將 存 儲 的 顏 色 值 與 開 始 顏 色 或 末 尾 的 顏 色 值 比 較 , 所 以 只計 算 機 信 息 工 程 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書22能 查 找 這 兩 種 顏 色 , 不 能 像 8 位 那 樣 查 找 一 段 顏 色 范 圍 , 這 是 因 為 16 位 模 式 下 , 是RGB 編 碼 的 像 素 值 , 如 果 要 查 一 個 從 紅 色 ( red 的 值 為 10, green 的 值 為 0, blue 的值 為 0) 到 深 一 點 的 紅 色 ( red 的 值 為 11, green 的 值 為 0, blue 的 值 為 0) , 若 按 8位 方 法 查 詢 , 就 會 將 其 他 顏 色 范 圍 也 一 并 包 含 進 來 , 如 顏 色 值( 0, 01010, 11110, 00000) 。T3DLIB1 函 數(shù) 庫 沒 有 給 出 24 和 32 位 模 式 下 的 顏 色 識 別 函 數(shù) , 顏 色 識 別 也 可 以 在其 他 模 式 下 進 行 。 8 位 模 式 , 存 儲 一 個 像 素 的 顏 色 要 一 個 字 節(jié) , 而 16 位 模 式 下 , 存 儲一 個 像 素 的 顏 色 要 2 個 字 節(jié) , 同 樣 24 位 要 3 個 字 節(jié) , 32 位 要 4 個 字 節(jié) , 除 了 8 位 模式 外 , 其 他 模 式 都 是 RGB 編 碼 的 像 素 值 , 如 圖 34 所 示 。圖 34 16/24/32 位 RGB 像 素 編 碼因 為 各 個 模 式 下 的 RGB 像 素 編 碼 的 模 式 不 同 , 所 以 , 建 立 他 們 時 , 也 要 用 不 同 的算 法 , 基 本 上 可 以 通 過 簡 單 的 移 位 和 掩 碼 操 作 來 完 成 此 算 法 , 算 法 表 示 為 如 下 的 宏 :// this builds a 16 bit color value in format (1bit alpha mode)define _RGB16BIT555(r,g,b) ((b amp。 31) + ((g amp。 31) 5) + ((r amp。 31) 10))// this builds a 16 bit color value in format (green dominate mode)define _RGB16BIT565(r,g,b) ((b amp。 31) + ((g amp。 63) 5) + ((r amp。 31) 11))// this builds a 24 bit color value in format 計 算 機 信 息 工 程 學(xué) 院 畢 業(yè) 設(shè) 計 說 明 書23define _RGB24BIT(a,r,g,b) ((b) + ((g) 8) + ((r) 16) )// this builds a 32 bit color value in format (8bit alpha mode)define _RGB32BIT(a,r,g,b) ((b) + ((g) 8) + ((r) 16) + ((a) 24))用 上 述 的 宏 來 生 成 不 同 模 式 下 的 RGB 字 作 為 傳 入 的 色 彩 的 值 , 顏 色 比 較 可 參 照 16位 模 式 , 但 也 可 以 分 別 比 較 各 個 RGB 的 具 體 值 , 因 為 24 位 與 32 位 都 是 整 數(shù) 字 節(jié) , 在將 指 向 表 面 的 指 針 定 義 為 UCHAR *類 型 , 可 以 分 別 比 較 Red, Green, Blue 的 值 。 當 指向 表 面 的 指 針 定 義 為 UCHAR *時 , 傳 入 的 lPitch 值 不 需 要 做 任 何 改 變 , 如 果 將 指 向 表面 的 指 針 類 型 轉(zhuǎn) 換 為 USHORT*或 UINT *時 , 也 要 改 變 lPitch 的 值 , 這 是 因 為 lPitch的 值 是
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1