IERG3080 SoftwarePatterns

news/2024/12/11 19:34:32/文章来源:https://www.cnblogs.com/CSE2425/p/18600521

IERG3080 Fall 2024 - Group Project

Due: 23 Dec 2024

Instructions:

● This project takes 30% of the course total.

●   Your group needs to use Visual Studio to implement a game using WPF in C#

described in this specification, and also write a 5-page report with details on your system structure (class design, class reuse, software patterns used), the testing plan, and the difficulties you have overcome during your project.

●   You must demonstrate the ability to self-learn the details about programming, and provide a list of references of online resources in your report, either integral or   supplementary to the completion of the project.

●    Every group has to submit a zip file to the Blackboard consisting of the whole visual studio project, a standalone playable (your exe and other needed resources files), a report in pdf format, and a 1-min demonstration video capturing the losing (and  winning, if any) moments of the game.

● Your project is expected to be run correctly on the Windows machines in ERB1004.

● You are required to use Agile methodology in your project.

Grading scheme (max 30%). Only consider submissions that work properly.

○    Fulfilling the requirements in the implementation, and the releasable status of the project (user-friendliness, robustness, etc.)  (5%)

○ Goodness of the design, including class reusability and design patterns (10%)

■    Describe these in the report.

● Advanced features (optional)

○    Feature 1

■    Fulfilling the requirements (2%)

■ Goodness of design (4%)

○    Feature 2

■    Fulfilling the requirements (4%)

■ Goodness of design (8%)

● Written report (mandatory) (5%)

○    Using proper modeling languages for describing the design

■    Do NOT put your source code directly in the report!

○ An appropriate list of references in the report

The final score is the minimum of 30 and the sum of the obtained scores. No score is given to the advanced features if the mandatory parts are not finished.

Background

Tetris is an old but popular puzzle video game with many variants. In the game, there is a rectangular field. Game pieces, known as tetrominoes, drop from the top of the field, one at a time. The player can move the falling piece horizontally or rotate it before it lands. The player can also accelerate the falling speed of the piece. When a row is completely filled, the row will be eliminated.

In this project, you need to implement a simplified Tetris game. Extra features other than those described below are welcome, but not necessary.

Baseline Requirements

The baseline of the project is to implement a single-player version of the game which is similar to the one in the following website:

https://tetris.com/play-tetris

There are 7 types of tetrominoes in the game as shown in the figure below.

 

Source: https://en.wikipedia.org/wiki/Tetris

The falling piece can be:

● Rotated 90 degree clockwise (or anticlockwise) by the player if the piece after rotation does not overlap with other landed pieces;

● Moved horizontally by the player if the new location does not overlap with other landed pieces.

The falling speed depends on 代写IERG3080 Software Patterns the number of eliminated rows. The player can accelerate the  falling speed of the piece (soft drop), or land the piece directly (hard drop). The game is over when the landed tetrominoes have some blocks outside the game field.

The score earned for eliminating n rows follow the formula 100  ×  2n. Once a row is eliminated, the upper rows shift down to replace the eliminated row.

The following is a list of features that are NOT required to be implemented:

● Play by mouse control

● Hold a piece (swap to the on-hold state for future use)

● T-spin

● Levels (that multiples the score and increases the falling speed)

The UI should show at least the following components:

● The game field (20 rows, 10 columns)

● The score

● The next tetrominoes (at least 1)

For user-friendliness, a simple main menu before gameplay, a game-over message, the pausing feature, and the ability to start a new game without re-launching the program are necessary.

Advanced Features

The following two advanced features are optional. You can implement both features if you     want to. Advanced gameplay involves two players. When a player clears more than one row at a time, some garbage rows will be sent to the game field of the other player. More specifically, when n  >  1 rows are eliminated, 2n−1  garbage rows will be sent. The garbage rows always appear from the bottom and raise the other existing rows.

Every garbage row consists of garbage blocks and a single hole. When the hole is filled by  landed tetrominoes, i.e., the row is completely filled, the row will be eliminated. An example of garbage rows is shown in the figure below.

 

Source: https://harddrop.com/wiki/Tetris_Battle#Normal_Garbage

Feature 1

Implement the battle mode of a local 2-player Tetris game (2 players play on the same computer). That is, your product supports both single-player mode and battle mode. Except the extra rule for garbage rows, the remaining rules are the same as that in the baseline requirements. When a player loses the game, the other player wins and the game session is ended. If both players lose at the same time, then it is a draw.

 

The following is a list of features that are NOT required to be implemented:

● Computer player (AI)

● Control settings (you can pre-define the controls)

The UI should show at least two sets of

● The game field (20 rows, 10 columns)

● The score

● The next tetrominoes (at least 1)

One set for each player. That is, the two players are playing in their own individual game field.

Feature 2

Implement the battle mode of an online 2-player Tetris game (2 players play on different computers). That is, your product supports both single-player mode and battle mode. The requirements are the same as those in Feature 1, except that the players are playing on separate computers.

To initiate the network connection, one of the players is the host while the other one is the client. The client inputs the host’s IP address to attempt the connection (assume IPv4). You can pre-define a port for the communication purpose.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/851011.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【docker】教你将程序打包成 Docker 镜像

引言 在现代软件开发中,容器化技术已经成为趋势。不仅仅是Docker,云原生架构、Kubernetes等同样依赖镜像技术来实现应用的快速交付和高效部署。将程序制作成镜像是迈向容器化和云原生的第一步。这篇文章将从零开始,带你轻松掌握将程序打包成镜像的核心技能,为你的应用构建“…

多头注意力

1.原理相比于单头注意力模型来说,不同之处是输入中的每一个token都放入多个注意力头中计算,并将同一个token得到的结果进行拼接后再通过一个线性层得到结果

CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序

Selenium Selenium 是一款开源且可移植的自动化软件测试工具,专门用于测试网页端应用程序或者采集网页端数据。它能够在不同的浏览器和操作系统上运行,具有很强的跨平台能力。Selenium可以帮助测试人员更高效地自动化测试基于Web网页端的应用程序,也可以帮忙开发者方便地完成…

记一次TIA V16下面1200PLC硬件编译错误的处理

今天使用TIA V16做了一个CPU 1214C AC/DC/Rly的程序,编译的时候报错如下:双击错误之处也没跳转到出错位置。刚开始以为是不是路径有中文,项目名有中文,后来一想都16版本了,不至于吧? 电脑里面另一个虚拟机里有TIA V17,把项目程序拷贝到那边,打开编译通过了。我估计是固…

转载:【AI系统】AI系统架构的组成

AI 系统组成 如图所示,大致可以将 AI 系统分为以下几个具体的方向:AI 训练与推理框架 AI 框架不仅仅是指如 PyTorch 等训练框架,还包括推理框架。其负责提供用户前端的 AI 编程语言,接口和工具链。负责静态程序分析与计算图构建,编译优化等工作。AI 框架本身通过提供供用户…

转载:【AI系统】AI系统概述与设计目标

AI 系统全栈架构 通过对 AI 的发展、以及模型算法、硬件与数据的趋势介绍,我们已经了解了 AI 系统的重要性。本文将介 AI 系统的设计目标、组成和生态,让读者形成 AI 系统的知识体系,为后续展开每篇文章的内容做好铺垫。 AI 系统设计本身需要各个环节通盘考量,无论是系统性…

转载:【AI系统】AI 发展驱动力

AI 起源于上世纪五十年代,经历了几次繁荣与低谷,直到 2016 年谷歌旗下的 DeepMind 发布 AlphaGo 程序赢得与世界围棋冠军的比赛,大众对 AI 的关注与热情被重新点燃。其实 AI 技术早在这个标志事件之前已经在工业界很多互联网公司中得到了广泛应用与部署。例如,搜索引擎服务…

转载:【AI系统】昇腾数据布局转换

NHWC 的数据排布方式更适合多核 CPU 运算, NCHW 的数据排布方式更适合 GPU 并行运算。那么接下来让我们了解一下在华为昇腾的 NPU 中,这种特征图的存储方式。截止到 2024 年,华为昇腾在私有格式的数据处理和特殊的数据形态越来越少,主要是得益于 AI 编译器和软件的迭代升级…

转载:【AI系统】AI的领域、场景与行业应用

AI 的历史与现状 本文将介绍 AI 的由来、现状和趋势,让大家能够了解 AI 应用的由来与趋势,为后面理解 AI 系统的设计形成初步的基础。在后面文章介绍的人工智能系统(AI System)奠定基础,值得注意的是,这些系统设计原则大部分也适合于机器学习系统(ML System)。 因为系统…

转载:【AI系统】分布式通信与 NVLink

在进入大模型时代后,大模型的发展已成为 AI 的核心,但训练大模型实际上是一项比较复杂的工作,因为它需要大量的 GPU 资源和较长的训练时间。 此外,由于单个 GPU 工作线程的内存有限,并且许多大模型的大小已经超出了单个 GPU 的范围。所以就需要实现跨多个 GPU 的模型训练,…

转载:【AI系统】NVLink 原理剖析

随着 AI 技术的飞速发展,大模型的参数量已经从亿级跃升至万亿级,这一变化不仅标志着 AI 的显著提升,也对支持这些庞大模型训练的底层硬件和网络架构提出了前所未有的挑战。为了有效地训练这些复杂的模型,需要依赖于大规模的 GPU 服务器集群,它们通过高速网络相互连接,以便…

转载:【AI系统】代数简化

代数简化(Algebraic Reduced)是一种从数学上来指导我们优化计算图的方法。其目的是利用交换率、结合律等规律调整图中算子的执行顺序,或者删除不必要的算子,以提高图整体的计算效率。 代数化简可以通过子图替换的方式完成,具体实现:1)可以先抽象出一套通用的子图替换框架…