本课内容 接下来的几节课,我们要利用C语言开发一些游戏 本节课开发一个俄罗斯方块游戏 游戏规则.

Slides:



Advertisements
Similar presentations
數學社群 教學分享 和平國小 陳淑渟老師 數學社群 教學分享 和平國小 陳淑渟老師. 小一常發生的 學習困難 定位板的應用 序數的學習 困難與教學 突破 主題大綱.
Advertisements

健康.安全年 製作 : 黃靜怡. 安全第一,我想,這是一句大家都耳熟能詳的話吧,說安全, 簡單的說,就是注意自己、眼睛要看、耳朵要聽,不要莽莽 撞撞的,安全是大家所期望的,而父母總是常常掛念我們, 就是希望我們能安全,畢竟,孩子是父母一輩子的牽掛,會 擔心我們的,往往就是關心我們的人,每個人都希望自己做.
【大願文教基金會】園藝治療師 黃盛璘督導、王麗玲執行. 年齡在 2 足歲以上 18 歲以下,經醫學中 心或區域醫 院鑑定為 重度、極重度 身心障礙,不具行動能 力、且不能自理生活,並持有身心障礙 手冊的新北市居民。 八里愛心教養院~服務對象.
第二十九课 致儿子书 张之洞.
如何陪伴孩子度過 高三歲月.
把人的生命写在教育的旗帜上 了解一个案件 欣赏一篇散文 学习一种理念 感悟一个故事.
 第11讲 美国 巴西.
六大原因造成 現代人身體酸性化.
【2008年高考重庆卷】A.当冰雪皑皑之际,唯独梅花昂然绽放于枝头,对生命充满希望和自信,教人精神为之一振。
我們的心得與感謝 郭至中 陳奕叡 黃澤璽 陳劭濬 賴士杰 張文源 向恩霖 史瑞晨 鄭賢杰 王翎 曠 耘 黃誼欣 張語倢 鍾巧薇 徐培芝
景区讲解常用方法.
我征服了黃山 林達的黃山之旅 2006春.
班級愛心小護士訓練 臺南市東區勝利國小 健康中心.
项目四 营业税 山东经贸职业学院 财政金融系.
敬业·创业·乐业 ——我的成长之路 赵谦翔.
计算机三级考试C语言上机试题专题.
四年七班親師會 自信學習,健康成長.
厂务公开与民主管理 主讲人:范丽娜 电话:
醫療旅遊.
社會發展學系 簡 介.
人物小传:杨嘉嵋,1975年出生,国家 重点四川大学本科毕业,中国传媒大学博士毕业,现为上海政法学院讲师。多次发表学术论文:《试论社会主义法治的目标和现代法治精神的培育》发表于钦州师范高等专科学校校报2000年04期,《西部在引进,利用外资中应重视的问题及对策》发表于四川师范学院学报2000年05期,《试论毛泽东的刑法思想》发表于达县师范高等专科学校学报2001年01期,《美国著名主持人的十点共性》发表于中国广播电视学刊2007年08期,《我国电视法治节目的现状与提升》发表于新闻战线2008年08期。
C#程序设计案例教程 第3章 程 序 结 构.
第二章 语用的主要要素分析 第一节 语境 第二节 预设 第三节 角色 第四节 视角.
从从容容中考去.
美麗的星空 陳弦希製作.
性別刻板印象.
初三8班(上) 期末总结班会.
初三(上) 期末总结班会.
一週菜單設計.
第六章 商业银行:管理与创新 第一节商业银行资产负债管理 第二节商业银行资本金管理 第三节商业银行风险管理 第四节商业银行金融创新
第一章信託法 第一節 信託契約 第二節 信託財產 第三節 受益人 第四節 受託人 第五節 信託關係之消滅.
改革开放给我们带来的变化 系别:11商务流通系 班级:物流四班 组员:物四男生组.
大村國小 尋根之旅.
那年我參加瑞士巴塞爾博覽會, 除了接單做貿易,還零售賣品, 以擴大出口商品的影響。
中國醫藥大學 北港分部簡報.
西安国际港务区 入区企业相关地方税收 知识培训
拒绝毒品健康成长 ——张鸿谊.
动商研究中心 让高校体育驶入快车道 --国家“学校体育”相关文件解读 2016 年 05 月 15 日.
第三章 领悟人生真谛 创造人生价值 第一节 树立正确的人生观 创造有价值的人生 第二节 第三节 科学对待人生环境.
鸟的生殖和发育.
计算机高级程序设计 第五章.
第 5 章 流程控制 (一): 條件分支.
第十四章 中国特色社会主义事业的依靠力量. 第十四章 中国特色社会主义事业的依靠力量 内容提要 包括知识分子在内的工人、农民是中国特色社会主义事业的根本力量;改革开放以来出现的新的社会阶层是中国特色社会主义事业的建设者;必须认真贯彻尊重劳动、尊重知识、尊重知识人才、尊重创造的重大方针,最广泛最充分地调动一切积极因素;巩固和加强各族人民的团结合作。
终极(13)班 赵树杰 许志鹏 初二(13)班.
全面推廣政府服務流程改造 行政院研究發展考核委員會  主任委員 宋餘俠 102年7月17日.
中国政法大学卫生法研究中心 于秀艳 2011年6月28日 杭州
思想道德修养与法律基础.
第1課 華南地區— 海陸文化的交會區.
多元文化“地球村”—— 世界文化之旅.
歡樂大派對 六年七班 第一組 自然成果發表會.
專題報告: 沒有國哪裡會有家?.
100道素菜 想看哪一道菜時 直接點一下就可進入 1西蘭花燒豆腐 2蕃茄炒凍豆腐 3東坡豆腐 4.西芹腰果百合 5土豆燉番瓜 6香椿豆腐
就在那裡上主要我去.
環境教育宣導 疼愛地球 珍惜資源 愛護環境.
第5章 文本与字体 2018/12/3 面向对象与可视化 程序设计 --Visual C++ 编程 主讲教师: 唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心) 清 华 大 学 2001年2月 2018/12/3 Huang Weitong.
校外教學六福村一日遊.
債之標的 楊智傑.
契約與規範期末報告 -旅遊定型化契約書 指導老師:李惠圓 班級:四動二A 組別:第一組 組員:4970T010許欣婷 4970T041林姿汶
環境教育宣導 疼愛地球 珍惜資源 愛護環境.
《面向对象程序设计与Visual C++6.0教程》
程式的時間與空間 Time and Space in Programming
第5章 文本与字体 2019/4/25 面向对象与可视化 程序设计 --Visual C++ 编程 主讲教师: 唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心) 清 华 大 学 2001年2月 2019/4/25 Huang Weitong.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
附件六 慢飛天使 智能障礙介紹 炫寬愛心教養家園介紹 2019/5/27.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
2007年六十四个热点话题 写作提示及解说.
多重條件選擇敘述
太空人是載人航太的核心。選拔和訓練太空人是一個國家可以獨立自主實施載人航太的重要標誌之一。
Presentation transcript:

本课内容 接下来的几节课,我们要利用C语言开发一些游戏 本节课开发一个俄罗斯方块游戏 游戏规则

游戏区域的绘制 int x,y,nW,nH; //小方块的绘制 for (i=0;i<m_iRow;i++) for (j=0;j<m_iCol;j++) { if (GameStatus[i][j]==MAP_STATE_NOT_EMPTY) //在游戏区域中状态为被占用状态的区域绘制小方块 x = m_iStartY+j*m_iLarge +2; y = m_iStartX+i*m_iLarge +2; nW = m_iLarge-4; nH = m_iLarge-4; pDC- >BitBlt(x,y,nW,nH,&m_memRectDC,m_iBlockSytle*30,0,SRCCOPY); }

游戏区域右侧的文本显示 //显示游戏区域及游戏级别的汉字描述 if (!m_bGameEnd) { pDC -> SetBkColor(BLACK); pDC -> SetTextColor(WHITE); pDC -> TextOut(m_iStartY+320, m_iStartX+220, "游戏区域大小:"); pDC -> TextOut(m_iStartY+320, m_iStartX+240,m_strArea); pDC -> TextOut(m_iStartY+320, m_iStartX+280, "游戏级别:"); pDC -> TextOut(m_iStartY+320, m_iStartX+300,m_strLevel); }

游戏区域右侧的文本显示 //显示总分 if (!m_bGameEnd) { CString lsStr; lsStr.Format("总分为:%d 分",m_iPerformance); pDC -> SetBkColor(BLACK); pDC -> SetTextColor(WHITE); pDC -> TextOut(m_iStartY+320, m_iStartX+180,lsStr); }

开发第二步(进行游戏实战) //画下一次将要出现的方块,用于提示用户 if (!m_bGameEnd) { pDC -> SetBkColor(BLACK); pDC -> SetTextColor(WHITE); pDC -> TextOut(m_iStartY+320, m_iStartX,"下一个方块:"); int x,y,nW,nH; for (UINT k=0;k<4;k++) i = NextStatus[k][0]; j = NextStatus[k][1]; x = m_iStartY+j*30 +2+320; y = m_iStartX+i*30 +2+30; nW = m_iLarge-4; nH = m_iLarge-4; pDC->BitBlt(x,y,nW,nH,&m_memRectDC,m_iBlockSytle*30,0,SRCCOPY); }

进行事件处理(游戏开始) if (!m_bGamePaush) //如果不是游戏暂停状态,则必须作些初始工作 { m_bGameEnd = FALSE; //总分值清零, 并显示总分记分牌 m_iPerformance = 0; //显示当前的区域及游戏级别的汉字描述 CurrentAreaAndLevel(); CRect rect(m_iStartY, m_iStartX, m_iStartY+440, m_iStartX+370); InvalidateRect(&rect); } m_bGamePaush = FALSE;

显示当前的区域及游戏级别的汉字描述 void CSkyblue_RectView::CurrentAreaAndLevel() { switch(m_iRow) case 12: m_strArea = "12行列"; break; case 18: m_strArea = "18行列"; break; case 24: m_strArea = "24行列"; break; case 30: m_strArea = "30行列"; break; } switch(m_iLevel) case 0: m_strLevel = "第一级: 入门级"; break; case 1: m_strLevel = "第二级: 初级级"; break; case 2: m_strLevel = "第三级: 中级"; break; case 3: m_strLevel = "第四级: 中高级"; break; case 4: m_strLevel = "第五级: 高级"; break; case 5: m_strLevel = "第六级: 顶级"; break;

设置对话框 修改构造函数: CSettingDlg(int m_iArea, int m_iLevel,int m_iBlockStyle, BOOL m_bMusic,BOOL m_bDrawGrid, CWnd* pParent = NULL) OnInitDialog()中设置默认的选项 //参传来的参数赋初值 CComboBox *m_comboArea; CComboBox *m_comboLevel; CComboBox *m_comboBlockStyle; CButton *m_btnDrawGrid; CButton *m_btnMusic; m_comboArea = (CComboBox *)GetDlgItem(IDC_COMBO_AREA); m_comboArea -> SetCurSel( m_oldArea ); m_comboLevel = (CComboBox *)GetDlgItem(IDC_COMBO_LEVEL); m_comboLevel -> SetCurSel( m_oldLevel ); m_comboBlockStyle = (CComboBox *)GetDlgItem(IDC_COMBO_BLOCK_SYTLE); m_comboBlockStyle -> SetCurSel( m_oldBlockSytle ); m_btnDrawGrid = (CButton *)GetDlgItem(IDC_CHECK_GRID); m_btnDrawGrid -> SetCheck(m_oldDrawGrid); m_btnMusic = (CButton *)GetDlgItem(IDC_CHECK_MUSIC); m_btnMusic -> SetCheck(m_oldMusic);

设置对话框 点击OK,设置选中的项目: CComboBox *m_comboArea; CComboBox *m_comboLevel; CComboBox *m_comboBlockStyle; m_comboArea = (CComboBox *)GetDlgItem(IDC_COMBO_AREA); m_comboLevel = (CComboBox *)GetDlgItem(IDC_COMBO_LEVEL); m_comboBlockStyle = (CComboBox *)GetDlgItem(IDC_COMBO_BLOCK_SYTLE); m_iArea = m_comboArea -> GetCurSel(); if (m_iArea<0 || m_iArea>3) m_iArea = 0; m_iLevel = m_comboLevel -> GetCurSel(); if (m_iLevel<0 || m_iLevel>5) m_iLevel = 2; m_iBlockStyle = m_comboBlockStyle -> GetCurSel(); if (m_iBlockStyle<0 || m_iBlockStyle>5) m_iBlockStyle = 0;

调用对话框 游戏选择: int m_lsArea; switch(m_iRow) { case 12: m_lsArea = 0; break; case 18: m_lsArea = 1; case 24: m_lsArea = 2; case 30: m_lsArea = 3; }

调用对话框 CSettingDlg dlg(m_lsArea,m_iLevel,m_iBlockSytle,m_bMusic,m_bDrawGrid); if (dlg.DoModal()==IDOK) { //确定区域的大小 switch(dlg.m_iArea) case 0: m_iRow = 12; m_iCol = 10; m_iLarge = 30; break; case 1: m_iRow = 18; m_iCol = 15; m_iLarge = 20; case 2: m_iRow = 24; m_iCol = 20; m_iLarge = 15; case 3: m_iRow = 30; m_iCol = 25; m_iLarge = 12; }

调用对话框 //确定级别 m_iLevel = dlg.m_iLevel; //选择的样式 m_iBlockSytle = dlg.m_iBlockStyle; //确定是否绘网格背景 m_bDrawGrid = dlg.m_bDrawGrid; //检查是否插放音乐 m_bMusic = dlg.m_bMusic; Invalidate();

TOOLBAR选择设置 添加一个UPDATA_COMMAND_UI事件 if (m_bGameEnd || m_bGamePaush) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE);

课程讲授完毕 感谢聆听! www.dut-px.com/