C语言实现俄罗斯方块 邓友明(20020263) 胡文峰(20020260) 李乐(20020248) 李博(20020272)

Slides:



Advertisements
Similar presentations
办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
Advertisements

1 門市服務丙級技術士 技能檢定介紹 門市服務丙級技術士報告注意事項 證照名稱:門市服務丙級技術士 發照單位:行政院勞工委員會 有效期限:終生有效 考照時間:每年一次,皆為第一梯次 1. 簡章與報名書表發售時間:每年 1 月 2. 報名時間:每年 1 月。 3. 學科考試時間:每年 3.
魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
一、真愛密碼 二、尋求真愛 三、有自尊的愛. 。如果雙方對愛情產生 質疑、困惑時,則表示 彼此之間的愛情關係仍 有 待加強或釐清,千萬別 急著為自己的人生大事 下決定。 我是一個 16 歲的未婚媽媽,發現自 己懷孕時,已經五個月大了,我知 道自己沒能力照顧孩子,在驚訝之 於,大人們只好坦然接受,幫我找.
大地遊戲王 課程實錄.
生源地助学贷款系统还款功能优化说明 评审三局 2015年5月.
加強水銀體溫計稽查管制及回收 回收作業須知及緊急應變措施
第二框 信用工具和外汇.
二、信用工具和外汇.
我征服了黃山 林達的黃山之旅 2006春.
第4章 分錄及日記簿 4-1 借貸法則 4-2 日記簿的格式及記錄方法 4-3 分錄的意義及記錄方法 4-4 常見分錄題型分析
为您扬帆,助您远航! 徽商银行特色新产品介绍. 为您扬帆,助您远航! 徽商银行特色新产品介绍.
一、平面点集 定义: x、y ---自变量,u ---因变量. 点集 E ---定义域, --- 值域.
2013年生源地贷款工作回顾及下一步工作思路 2013年11月.
银联代付产品.
公务卡使用说明.
術科測試解析 第二站 櫃檯作業 (瑋博POS系統).
第十三屆 Step.1 我們的目標 Step.2 我們的角色 Step.4 權利與義務 義務 權利 年繳會費五百元整
單元名稱: 愛的十字路口.
财务知识培训 杨 秀 玲 2014年10月.
银联代收产品.
散文選及習作 [墨池記] 曾鞏 國二甲 S 洪國勛 指導教授:胡翰平 老師.
宸鸿科技集团.
主讲人:王燕超 时间:2013年12月11日 地点:310 (报告厅)
第三课 走向自立人生.
财务管理.
法律修养专题 对应教材的第七、八章内容 及第五、六章法律部分内容.
第一章信託法 第一節 信託契約 第二節 信託財產 第三節 受益人 第四節 受託人 第五節 信託關係之消滅.
第一章会计技能的内容 1.1会计技能的重要性.
项目五——校园一卡通程序功能模块化设计 5-1项目显示查询和退出函数设计.
管理学基本知识.
东南大学 数字迎新的探索 东南大学 网络与信息中心 张月琳.
新时期下的财政票据管理 省非税局票据管理处 陈奕晶.
对实验教学工作的认识与思考 西北工业大学 万小朋 2014年11月.
滁州学院首届微课程教学设计竞赛 课程名称:高等数学 主讲人:胡贝贝 数学与金融学院.
植物保护 课程整体设计 汇报 申报省级精品资源共享课建设 植物保护课程组.
第4章 大型综合程序范例解析 前言 目的: 通过案例解析,领略大型程序的设计思想和开发方法 ,了解程序评价标准 案例: 通讯录 简单计算器
第三方支付风生水起,多路大佬竞角逐 第三方支付为互联网企业带来的巨大利益,各路势力目前 正争相获取第三方支付牌照,但第三方支付平台跑路、盗 刷等问题频出,使得行业未来发展受到挑战,那么未来第 三方支付将走向如何? 对此,九次方大数据结合网络舆情,对第三方支付行业进 行了梳理,您会发现: 1、央行发放支付牌照政策收紧,新增获得第三方支付牌照的企业数量骤降.
政府扶持资金通览 技术改造篇.
拾貳、 教育行政 一、教育行政的意義 教育行政,可視為國家對教育事務的管理 ,以增進教育效果。 教育行政,乃是一利用有限資源在教育參
第一单元 生活与消费 第一课 神奇的货币 第二课时 信用工具和外汇 建行龙卡 工行 牡丹卡 农行 金穗卡.
课标教材下教研工作的 实践与思考 山东临沂市教育科学研究中心 郭允远.
課程銜接 九年一貫暫行綱要( )  九年一貫課程綱要( ) 國立台南大學數學教育系 謝 堅.
2.4 二元一次方程组的应用(1).
本科生医保资料的提交.
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
統計圖表的製作.
第12章 樹狀搜尋結構 (Search Trees)
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
資料結構 第4章 堆疊.
第六章 安全衛生工作守則 6-1 前 言  6-2 訂定依據相關法令規定  6-3 工作守則製作程序及製作前應注意事項  6-4 如何訂定適合需要之安全衛生工作守則  6-5 結 論.
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
健康體育網路護照操作 STEP1 於教育部體適能網站進入「健康體育網路護照」.
兒少保護通報處理流程介紹 臺中市家庭暴力及性侵害防治中心 陳秀婷/張美慧 社工督導員 2012/10/19.
5.汽车配件经营 我国汽车配件市场的概述 汽车配件零售网点的经营管理 汽车配件交易市场的经营管理 汽车配件的连锁经营
畢業資格審查系統 操作步驟說明.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
新制退休實務計算說明- 現職人員退休範例說明
門市服務丙級技術士技能術科檢定程序 第一崗位 (30%) 筆試類型(22.5%) 1.服務品質~30題 2.危機處理~30題 50分鐘
106 學年度新生入學說明會 國立臺灣海洋大學 教務處簡介
批次請(休)假單 功能路徑:[請假作業專區]→[批次請(休)假單] 功能說明:提供使用者線上申請/維護 多天、不連續請(休)假
學士學位畢業論文說明 逢 學 大 甲 土 理 管 地 2009/10/05.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
高雄市97年度國民小學閱讀計畫創新教學-教案達人創新教學方案
假代购诈骗钱 P2P网络非法集资洗钱 虚开增值税发票洗钱 非法经营POS机套现 被第三方支付平台骗取资金 买卖信用卡洗钱
多重條件選擇敘述
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
用加減消去法解一元二次聯立方程式 台北縣立中山國中 第二團隊.
安排座位.
Presentation transcript:

C语言实现俄罗斯方块 邓友明(20020263) 胡文峰(20020260) 李乐(20020248) 李博(20020272)

具体内容 1俄罗斯方块简介. 2功能简介. 3所用知识 4模块分析. 5数据结构. 6算法设计.

一. 俄罗斯方块简介: 相信大家都应该玩过俄罗斯方块这个游戏。 具体介绍略。 大部分俄罗斯方块游戏都是用比较高级的语言实现的。 这里我们要用C语言实现之。

二.功能分析: 1具有基本的游戏背景/界面。 2能随机生成所有可能的方块。 3能根据难度确定方块下落速度。 4能用键盘控制方向,变形。 5方块判别停止条件及墙壁。 6能判别消行及游戏结束。 7电脑能自动玩,可以选择人机对抗玩.(难) 8能记录玩者姓名及最佳成绩。

三.所用知识: 基本的C语言知识。 数据结构。 图形交互技术。 算法分析和设计。 数据库知识. 人工智能

四.模块分析 根据七种功能可得到六个模块. 分别为:1.界面; 2.方块; 3.下落及控制; 4.碰壁停止; 5.消行及玩完; 6.电脑判别最优走法(难) 7.记录.(难) 具体见下:

模块1.界面设计 基本符合一般的俄罗斯方块游戏; 我们设计时考虑倒我们屏幕的大小,采用16X24的方格阵.背景用蓝色,墙用红色, 墙内用白色. 这部分已设计好,看演示!

模块2.定义所有方块 所有俄罗斯方块都是有四个方格,所有可能情况有二十种(由于方块所占比率太小,有两!颜色随机!) 具体如下:0. 1. 2. 3. 4 5. 6. 7.

8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.

上述二十种方块中,0号1号可循环变形;2,3 号相同;4,5,6,7可循环变形;8,9,10,11可循 环变形;12,13,14,15可循环变形;16,17,18,19 可循环变形. 具体实现见数据结构部分. 此模块已实现,看演示!

模块3.下落及控制 下落比较简单. 控制也容易. 控制包括控制方向和变形. 变形可由方块定义的号码循环变换. 已部分实现,演示! 即图形的插,写及步长的大小来实现. 插写速度及步长大小可控制难度. 已实现,有演示! 控制也容易. 控制包括控制方向和变形. 变形可由方块定义的号码循环变换. 已部分实现,演示!

但两个嵌套起来就出现了问题(请大家指教): 即控制的时候不要影响下落,但控制时如用到getch()函数,要等待输入字符,因此下落因等待停止!查到一个kbhit()函数虽能在输入字符时不影响下落,但不能返回所输字符!最后用kbhit()判断是否有控制输入,用getch()判断控制操作虽能实现,但反应滞后!!??不完美! 演示之.

模块4.墙和已有方块阻挡的实现 我们讨论得到的一个方案为: 定义界面的时候,墙设为红色(好看起见),空白格为白色.方块为除黑白的其他随机颜色. 定义一个数组m保存界面当前每个方格的坐标及颜色值. 方块下落过程中遇到非白色的就停止.自定义一个stopmove( m,…)判断是否停止. 控制遇到非白色阻挡就失效. 停止的方块替换掉所在位置以前界面数组m的对应颜色.用自定义的getbk()函数返回新的数组m. 这一部分我们正在努力之中!!!

模块5.消行操作及失败判断 消行操作是难点. 首先是判断哪几行已满,然后要将该行以上所有内容整体下移所消的行数.具体算法我们还在研究之中. 失败与否就是判断是否有方块超过界面上界.不难!

模块6.能实现电脑玩 这一部分比较难,我们正在查找相应的书,学习相应的知识.

模块7.玩者姓名及成绩排行榜 分数由所消行数及难度确定. 设计时定义好. 在指定时间之内,或失败后都有一个最终分数.可以选择记录之.这将会被录入对应文件.用到C语言的文件操作. 能够调出排行榜,及最高纪录.用到数据库方面知识,及排序. 这一部分不容易,我们还在思考之中!

五.数据结构 通过以上模块分析,我们已经设计出如下数据结构: 1.点坐标结构: typedef struct{ int x; int y; }Pos; 2.点及颜色数据结构: Typedef struct{ Pos pos; //点坐标 int color; //颜色值 }PosType1; //用于保存界面及其他

3.头节点及方块号码数据结构: 4.方块定义: typedef struct{ Pos node0; /*int x1;int y1;*/ //方块头节点左上点 int num; //方块号码不同,对应形状不同 }PosType; 4.方块定义: Pos node[4]; //0号为头节点,其他三个与之对应 int color; //方块颜色 }Square;

以上数据结构不算完美,有待改进. 用上述结构,实际使用如下全局变量: PoseType start; // start.num号对应方块及头节点起始位置 Square squa; // 一种方块. ………….还有其他 自定义一个Square initsqua( PoseType start)的函数可将start.num号方块返回在start.Pos位置.方块具体设计见下一页:

1 3 2 以下为initsqua()函数内部12号方块 的定义: squa.node[0].x=start.node0.x; 2 以下为initsqua()函数内部12号方块 的定义: squa.node[0].x=start.node0.x; squa.node[0].y=start.node0.y; //0号节点 switch(start.num) //start.num为12 ………. case 12: squa.node[1].x=squa.node[0].x; squa.node[1].y=squa.node[0].y-STEP*1; //1号 squa.node[2].x=squa.node[0].x+STEP*1; squa.node[2].y=squa.node[0].y; //2号 squa.node[3].x=squa.node[0].x-STEP*1; squa.node[3].y=squa.node[0].y; //3号 break; //以上的 STEP 为每正方块边长,定义为20象素. ……..

通过使start.pos坐标的变换,调用函数initsqua(start)便可实现控制方块的功能. 控制功能函数在PoseType movestart(PoseType start)内编写. 由方块的左上点坐标及STEP可画出方块: bar(squa.node[0].x, squa.node[0].y, squa.node[0].x+STEP, squa.node[0].y+STEP); //bar为图形库中画方块函数,四个参数为左上角坐标x,y, //右下角坐标x,y.

六.算法设计 考虑中…………