2048是一款在全球广受欢迎的数字益智游戏,由意大利程序员加布里埃尔·赛鲁利于2014年创造。这款游戏拥有一个干净的界面和一个强大的逻辑游戏玩法,挑战玩家合并相同编号的瓷砖,直到他们达到或超过2048年的名义目标。
游戏屏幕由一个4x4的网格组成,其中随机数字2或4最初填充单元格。玩家向上、向下、向左或向右滑动整个网格,使所有瓷砖都相应地移动。在每张幻灯片之后,一个新的2或4个瓷砖随机出现在一个空单元格中。
1.滑动和合并:当滑动网格时,所有瓷砖都会向所选择的方向移动,直到它们到达边缘或其他不可移动的瓷砖。如果两个相邻的瓷砖具有相同的数字,它们将在移动停止后与其值的总和合并成一个瓷砖,这个新的合并的瓷砖也将沿着移动方向移动,直到它不能进一步移动。如果存在三个相同值的块彼此相邻,则最接近滑动方向末端的两个块将合并在一起。
2.新瓷砖:在每一张有效的幻灯片之后(至少有一个瓷砖改变位置),游戏将在网格上的任何空白空间中随机生成一个新的2或4个瓷砖。
3.游戏目标:玩家的目标是不断组合数字瓷砖,创建一个值为2048的瓷砖。虽然理论上可以继续打更高的分数,但达到2048通常被认为是基本的胜利条件。
4.游戏结束:当没有移动可用时,游戏结束;当网格上的所有16个空间都被占用,没有相邻的瓷砖可以合并时,就会发生这种情况。
在这个项目中,您应该完成以下任务:
游戏可以使用WASD键或者上下左右键来控制
==任务1:游戏初始化(10分)==
- 1。实现游戏的一个开始框架,玩家可以从不同的初始游戏模式中进行选择,每一种模式都允许可定制的设置,如不同的开始板布局或不同的目标数字来实现。
- 2.至少有一种模式必须生成一个传统的4x4网格,其初始状态包含一个值为2的随机放置的平铺和另一个值为4的随机平铺。
- 3.游戏应该允许玩家在游戏玩法期间的任何时候重新启动新游戏。(不退出该程序并再次运行它。)
- 4.当开始一个新游戏时,游戏数据需要与新游戏保持一致。
- 5.带有不同数字的网格应该是不同的颜色。
==任务2:多用户登录(15分)==
- 1.为来宾和注册用户实现登录选择界面。(而且实现了自动填充上次登录的用户名)
- 2.客人可以不需要注册就可以玩游戏,但没有保存游戏进度的功能。
- 3.用户登录界面包括一个注册页面,并允许在输入帐户凭据后进行登录。
- 4.在程序退出并再次运行后,以前注册的用户仍然可以登录。
==任务3:保存和加载游戏(15分)==
- 1。每个用户(除客人之外)都可以选择加载他们以前保存的游戏;保存是一个保存文件,再次保存将覆盖之前的保存(覆盖原始保存是基本要求。如果每个用户实现多个保存槽,则不会得到额外的分数。)
- 2.从游戏开始界面,玩家可以选择加载他们的最后一次保存,其中应该包含关于经过的游戏时间、游戏板的状态和到目前为止的移动次数等信息。
- 3.每个用户的保存数据都是唯一的。
- 4.手动储蓄是一个基本要求;在定时间隔或退出时实现自动保存可以在高级部分获得积分。(每三秒自动保存,也实现了手动保存)
- 5.保存文件错误检查:当保存文件的格式或内容损坏时,损坏的保存将不会被加载,游戏仍然会运行而不是崩溃。(如果你的游戏能够检测到已经被其他人修改过的保存文件,同时仍然保持保存数据的合法性,那么它将获得高级积分。)
任务4:游戏玩法(30分)
- 1.==滑动和合并==:当玩家滑动矩阵时,所有的瓷砖都将朝着滑动方向移动,直到它们到达一个边界或一个不可移动的方块。在幻灯片结束后,具有相同数字的相邻瓷砖将合并为一个单一的瓷砖。
- 2.
按钮控制:界面必须包括上、下、左、右按钮,以方便在不同的方向合并。 - 3.==键盘控制==:不同方向合并(上下、左、右)需要键盘控制。
- 4.==新瓷砖==:在每张有效的幻灯片(至少有一个瓷砖改变位置)之后,游戏将在任何空白空间上随机生成一个值为2或4的新瓷砖。
- 5.==游戏胜利==:在经典模式下,目标是通过连续合并数字瓷砖达到2048块瓷砖。对于不同的模式,您可以设计您自己的目标。一旦目标实现,就会显示一个胜利屏幕。
- 6==.游戏结束==:当矩阵上没有更多的可移动空间时,游戏结束,即所有16个单元格都被占用,没有相邻的瓷砖可以合并。
==任务5==: Graphical User Interface (GUI) (10 points)
- 1.使用JavaFX、Swing或任何其他Java图形框架为游戏实现一个图形界面。
- 2.您将通过根据课程中提供的演示来完成代码来获得本部分的分数。
- 3.独立地创建一个GUI将算作高级点。
- 4.如果您的程序需要输入到命令行中,那么您将无法获得此任务的全部积分。
任务6:高级功能(20分)除上述基本要求之外的任何附加功能都将在这个高级类别中获得积分,包括但不限于:
- 1.==增强的图形和美学==
- 2.实现人工智能,达到高分
- 3.添加动画合并效果
- 4.==引入了一个限时的模式==(可以选择时间限制或者无限时间)
- 5.在游戏板上加入障碍
- 6.==在游戏中添加道具==(设置了是否允许使用道具,加时道具)
效果图:
controlFrame=new JFrame("Controller");
controlFrame.setVisible(true);
controlFrame.setSize(300,300);
JPanel controlPanel = new JPanel();
controlFrame.add(controlPanel);
JButton upBtn = new JButton("Up");
upBtn.setBounds(115,65,70,50);
controlPanel.add(upBtn);
JButton rightBtn = new JButton("Right");
rightBtn.setBounds(245,155,50,70);
controlPanel.add(rightBtn);
JButton leftBtn = new JButton("Left");
leftBtn.setBounds(65,155,50,70);
controlPanel.add(leftBtn);
JButton downBtn = new JButton("Down");
downBtn.setBounds(115,185,70,50);
controlPanel.add(downBtn);