2: Blocky: CSC148H1S 20241 Introduction to Computer SciencePython

Java Python Assignment 2: Blocky: CSC148H1S 20241 Introduction to Computer Science

Assignment 2: Blocky

Due date: Monday, March 25, at 6:00 PM.

You may work individually or with one other person on this assignment. Partners must be invited in MarkUs (and invitations accepted) by Monday, March 18 at 6:00 p.m.

Important: To find out what you can and cannot do in the code you write for your assignments, please review the “Technical (programming) requirements” on the course page Policies and Guidelines:

Assignments (https://q.utoronto.ca/courses/336881/pages/policies-and-guidelines-assignments? module_item_id=5314700) .

FAQ

Please refer to the A2 FAQ post on piazza (https://piazza.com/class/lqb4rm6drad417/post/1588)for any common questions or clarifications about the assignment. The FAQ is required reading for the

assignment.

Learning Goals

By the end of this assignment, you should be able to:

· model hierarchical data using a tree structure

· use diagrams to help you design and implement complicated algorithms

· implement recursive operations on trees (both non-mutating and mutating)

· convert a tree into a flat, two-dimensional structure

· use inheritance to design classes according to a common interface

Domain Comprehension Quiz

As you get started on the assignment, you should first complete the A2 Domain Comprehension

Quiz (https://q.utoronto.ca/courses/336881/quizzes/377088) . The quiz requires you to read through the handout and starter code to ensure you understand the game before starting to write any code. The quiz counts as part of your A2 grade and must be completed individually. Reminder that there are no extensions available for this quiz; you can only get an extension for the MarkUs submission.

Introduction: the Blocky game

Blocky is a turn-based game with simple moves on a simple grid structure where players try to achieve the highest score depending on their goals.

The game is played on a randomly-generated game board made of squares of four different colours.  Each player has their own goal that they are working towards, such as creating the largest connected “blob” of blue or getting the most red on the perimeter of the board. To achieve their goal, players can perform. a number of actions that change the configuration of the board such as rotating a block, smashing a block, or painting a block a new colour. After each move, the player sees their current score, which is determined by how well they have achieved their goal and which moves they have made. The game continues for a certain number of turns, and the player with the highest score at the end is the winner.

The following sections will explain the rules of the game in more detail, and then you will be asked to implement the game in Python.

The Blocky board and terminology

We call the Blocky board a ‘block’, which is best defined recursively. A block is either:

· a square of one colour, or

· a square that is subdivided into 4 equal-sized blocks (children).

Each block can be found at a level within the board defined by how deep the block appears in the recursive subdivision. The largest block containing the whole board is called the top-level block and lies at level 0. If the top-level block is subdivided, the four sub-blocks lie at level 1. If these sub-blocks are further subdivided, the sub-sub-blocks lie at level 2, and so on. In general, if a block at level k is subdivided, its four sub-blocks lie at level k+1.

To prevent infinite subdivsion, a Blocky board has a maximum level depth, which is the highest level a block can lie on. This maximum level depth determines the most number of recursive subdivisions    that can be made in the board. For example, a board with maximum depth 0 would display one solid   color. A board with ma Assignment 2: Blocky: CSC148H1S 20241 Introduction to Computer SciencePython ximum depth 1 would be subdivided into four equal-sized blocks, and so on.

The smallest block of all is called the unit cell and lies at this maximum level. A block which is not subdivided is called a leaf.

The following example board was generated with a maximum depth of 5 using an algorithm we will     describe later for you to implement. The numbers indicate the level the block lies at. Notice that there are at most 5 subdivisions of a block.

Actions and Moves

A number of actions can be performed in Blocky. A move is an action that is performed on a specific block.

The actions are:

Choosing a block and levels

We can select blocks and levels by hovering the mouse around the board and increasing/decreasing the levels to select (Keys S/W).

Actions can be applied to any block at any level (with some exceptions as mentioned above of course). For example, given this example board with maximum depth level 4:

We can change the level to apply a rotate clockwise action for a different block:

Of course there are many other blocks within the board at various levels that the player could have chosen.

Players

The game can be played solitaire (with a singleplayer) or with two to four players. There are three kinds of players:

1. A human player chooses moves based on user input.

2. A random player is a computer player that chooses moves randomly.

3. A smart player is a computer player that chooses moves more intelligently: Asmart player   generates a set of random moves and, for each move, calculates the score if the move were

played. The player would perform. the move that yields the best score.

Goals and scoring

At the beginning of the game, each player is assigned a randomly-generated goal. There are two types of goal:

1. Blob goal

The player must aim for the largest “blob” of a given colour c. A blob is a group of connected unit cells with the same colour. Two unit cells are connected if their sides touch; touching corners doesn’t count. The player’s score is the number of unit cells in the largest blob of colour c.

For example, for the following board with maximum depth level 3, Player 2’s goal is to create the largest blob for the Old Olive colour. Player 2’s score for this blob goal is 26.

2. Perimeter goal

The player must aim to put the most possible units of a given colour c on the outer perimeter of the   board. The player’s score is the total number of unit cells of colour c that are on the perimeter. There is a premium on corner cells: they count twice towards the score.

For example, for the following board with maximum depth level 3, Player x’s goal is to put the most  blocks of the Daffodil Delight colour on the perimeter as possible. Player 0’s score for the perimeter goal is 14.

Notice that both goals are relative to a particular colour. We will call that the target colour for the goal.

In addition to the points gained by the player from achieving their goal, a player can also lose points based on the actions they perform.

· Rotating, Swapping, and Passing cost 0 points.

· Painting and Combining cost 1 point each time they are performed. · Smashing costs 2 points each time it is performed.

Configurations of the game

A Blocky game can be configured in several ways:

· Maximum depth: While the specific colour pattern for the board is randomly generated, we control how finely subdivided the squares can be.

· Number and type of players: There can be any number of players of each type. The “difficulty” of a smart player (how hard it is to play against) can also be configured.

· Number of moves: A game can be configured to run for any desired number of moves. (A game will end early if any player closes the game window         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值