Tetris(俄罗斯方块)

经过调研,我们发现大家对传统的俄罗斯方块游戏已经非常厌倦了,因为它游戏模式单一,缺乏挑战性和竞技性,只能一个人玩,同时方块种类没有任何改变,都是大家很厌倦的那几种,因此我们希望在这些方面上做提高。

考虑到传统的俄罗斯方块的不足,我们对此进行了如下的改进:

1. 把传统的俄罗斯方块做成双人对战模式。这个想法来自其他多人版单机游戏(如实况、拳皇),能和朋友在一台电脑上玩竞技游戏是很有好处的(玩过实况PES和拳皇KOF的都很清楚吧)。为了增加双人竞技的难度和趣味性,每隔一段时间电脑会为双方自动加一行,如果自己消多行也能给对手增加行数。

2. 玩家可以自定义方块的类型,这是为了使玩家不厌烦于习惯性的7种方块,增加方块种类提高他们的兴趣;

3. 加入了很多很不错的音乐,单人玩的时候和双人对战别是一般风味;

以下是传统的俄罗斯方块游戏界面:

在我们经过不断地讨论和修改之后,最终我们实现了一下功能:

1. 单人对战中实现了菜单、快速下落、暂停、设置键位等功能;

2. 成功修改为双人对战模式,包含单人游戏和双人游戏,双人对战时也可以修改键位(这个想法也是来自PES和KOF),同时支持暂停、快速下降等功能;

3. 添加了本地记录setting的功能,这样同一个玩家在下次游戏的时候可以自动读取以前的setting;

4. 添加用户id的设置和排行榜和双人对战结果显示,以及进行本地存储和帮助信息;

5. 增加了音乐效果,在单人、双人、消行、结束的时候都会有音乐效果;

6. 增加了每隔一段时间加一行的功能,增加了游戏的难度。同时,在双人对战模式中,自己消行会导致对手增加行数,增加了趣味性;

7. 添加了用户自定义方块的功能,在block下可以自定义,同时增加了方块浏览器,在浏览器中用户可以查看自己设置的方块类型和原有的方块,同时在这个浏览器中可以对方块进行删减(限于自定义方块)。

下面是方块浏览器:(可以对方块进行查看和删减)

使用附加功能以后还可以通过block/原始模式 恢复到原始模式,但是保存自定义方块种类。

Pair programming的优点:

1. 有利于思想上的交流,可以一起思考,一起想到一些好的idea并且共同去实现;

2. 有利于框架的搭建,如果有什么没有想到的地方,partner会及时提醒。同时,对于双方的代码可以互相改进,发现其中的bug,提出bug所在并进行修改;

3. Pair progamming可以充分发挥双方的优势,让双方的优点相结合,是很不错的一个编程模式;

4. 可以用户体验,同时可以避免出现一个人写程序无聊的情况等。

不足:

1. 在idea的确定上可能会浪费一定的时间,但是这个在某些程度上是有好处的;

2. 在时间的确定和搭配上可能会出现一定的问题,这个需要在进行结对编程的时候着重考虑;

在结对编程的时候需要进行充分明确的分工,这样在进行编程的时候就不会出现重复代码等情况。同时,双方需要进行及时的沟通和版本控制。

代码链接:https://github.com/SuNNed/Tetris/blob/master/tetris.md?

时间: 2024-10-14 10:00:37

Tetris(俄罗斯方块)的相关文章

x01.Tetris: 俄罗斯方块

最强大脑有个小孩玩俄罗斯方块游戏神乎其技,那么,就写一个吧,玩玩而已. 由于逻辑简单,又作了一些简化,所以代码并不多. using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using System.W

Tetris(俄罗斯方块)

一天有个小朋友问我OpenGL俄罗斯方块怎么写, 俄罗斯方块分成两部分游戏逻辑和画面渲染. 1. 游戏逻辑 一个简单的俄罗斯方块的逻辑部分需要考虑的情况如下: 1. 方块的表示(坐标, 旋转, 上下左右移动) 2. 格子的状态记录, 移动中的方块和边界的碰撞检测和已固定的方块的碰撞检测 3. 行满检测与消除 具体的面向对象实现如下: class Game{ public: int tiles[20][10] = {0}; void new_tile() { tile << 5, 0, rand

用JAVA写的俄罗斯方块

业务需求->业务对象模型(对象关系)->数据建模->类的设计->概要编码->详细功能设计 基本规则: 1)首先呢,俄罗斯方块都是由一个个小格子构成的,我们叫它Cell: 行宽:10,列高:20,以每个小正方形为单位 2)其次,所有的俄罗斯方块都是一组由4个小型正方形组成的规则图形,我们叫它Tetromino    分别为:S.Z.L.J.I.O.T这几种 哈哈,有了这样的分析,就可以构建数据结构设计了 数据结构设计: Cell     格子|--     int row 行|

OOP面向对象编程之俄罗斯方块项目实现过程

这是用纯java编译的俄罗斯方块,讲这个游戏的是达内的刘苍松老师,苍老师讲课我们学生都比较喜欢,下面我把当时的做这个游戏学习笔记分享给大家,先看下游戏截图: 重点学习笔记: Tetris 俄罗斯方块 Tetromino 四格方块 业务需求(清晰明确) -> 业务对象模型(理清对象关系)-> 数据建模(用数据表达对象,和对象的关系)-> 类的设计-> 概要编码(语法知识)-> 详细功能设计(语法知识)-> 1 明确业务需求 用自然语言,将业务功能描述清楚 俄罗斯方块的基本

Java20: 俄罗斯方块

业务分析:百度 数据模型: 类的设计: 1) Cell 格子 int row 行: int col 列: Image image 贴图: 2) Tetromino 四格方块 Cell[] cells 4个格子: 3) Tetris 俄罗斯方块  继承 JPanel int score 分数: int lines 行数: Cell[][] wall = new Cell[20][10] 墙: Tetromino tetromino 四格方块: Tetromino nextOne 下一个四格方块:

怀旧浪潮来袭,小霸王游戏、windows95......曾经的经典哪些能戳中你的心怀?

随着前两天上架的 Rewound 在 iPhone 上复刻了 iPod Classic为大家掀起一场怀旧浪潮,那么除了 Rewound还有什么经典?今天我们就来怀旧一下那些曾经的经典.80经典小霸王游戏.俄罗斯方块.windows95系统这些应用的时代,你是否经历过呢? https://www.macdown.com 先来一波经典的80后游戏回忆杀,你准备好了吗? Tetris俄罗斯方块 for Mac(经典休闲游戏) 由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方

hdu 5374 Tetris 模拟俄罗斯方块

题目链接: hdu5374 题意: 俄罗斯方块游戏, 给出一个玩家的操作序列(w,a,s,d,p), 和依次出现的n个方块的形状, 问最终玩家消除了几行. 解题思路: 大模拟,想清楚就好写了, 用一个数组保存 所有形状 所有状态下 四个点的相对位置 每进行一次操作时,判断是否合法(越界,重叠) 下落时判断是否重叠 ,如果重叠则不动 将方块加入地图,消行,换下一个方块继续 代码: #include<iostream> #include<cstdio> #include<cstr

很棒的计算机入门课程:公开课从与非门到俄罗斯方块(第二部分)

博客中的文章均为meelo原创,请务必以链接形式注明本文地址 Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course) by: Noam Nisan & Shimon Schocken from: Hebrew University of Jerusalem 课程链接:https://www.coursera.org/learn/nand2tetris2/home

俄罗斯方块

俄罗斯方块游戏自动机 <用electron制作俄罗斯方块游戏> 后续文章,智能程序玩俄罗斯方块游戏. 背景 前不久用ES6完成了基本的俄罗斯方块游戏,今天已经完成了一个初步的智能算法,可以自动玩俄罗斯方块了,让自己的想法朝实现更近了一步. 效果图 第一次运行,消除了1398行,窃喜! 程序结构 主要关注智能算法,结构简单化,全部放在了index.js中. 用定时器驱动游戏 function autoPlayClick(){ isAutoPlay = document.getElementByI