联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Python编程Python编程

日期:2025-10-22 06:34

Introduction

In this project, you'llbe working off some skeleton code to build 2048! If you're unfamiliar, 2048 is a sliding puzzle game where the goal is to combine same-valued tiles to reach the value 2048. You can  play the game att this link for free to get used to  how  it works. You won't be building the game from scratch, just filling out five blocks. All of those blocks willbe reporters, and should not update the board display—that's handled for you in the skeleton code. So make sure not to mutate the original board. Once you've completed those five block definitions, you won't need to change anything else about the code;it should work!

In a nutshell,the game works like this:

· The starting board contains two tiles with values of 2 or 4.

· When the player hits an arrow key, all tiles on the board "merge" in that direction.

· After each merge,a random tile of value 2 or 4 is added to the screen.

· The game ends when there are no merges left. You "win" if a tile reads “2048” or more!

The board representation in this version of 2048 is abstracted away (we call that an“abstract data type”), but you can picture it as a table that looks like the  picture on the right, containing only 0 and powers of 2 greater than or equal to 2 (e.g., 2, 4, 8, 16, etc). Do not assume  that boards are always 4x4-all the code we give you as well as the code you write should be able to work with any size square board!

Note: Make sure to run your game in Turbo Mode for best response time results. To turn on Turbo Mode, check the “Turbo Mode”box in the gear icon menu. The green starting flag will change to a lightning bolt (as shown).

This project must be completed with a partner. If you're having trouble finding one, head to the Partner-Finding thread on Ed! Do remember that while you may discuss general ideas with students you aren't partners with, sharing code would be academically dishonest. If you're having trouble, please contact the course staff for assistance—Ed, Office hours, labs, and the project party are all here to help you feel good about the work you're doing! If you can't make the times, tell us, and we'll figure out how you can stilll get support. But we won't know when or how to help unless you let us know!

Note:You can import blocks from libraries

Helper Blocks


You willnot need to know how we represent a boarrd in this game—we have provided the following nine helper blocks for you to use to interface with our board implementation. The Power of Abstraction!With this in mind, please make sure not to modify the input board in any of the blocks you write! In addition, please use these blocks,rather than coming up with your own. Also keep in mind that you generally want to abstract as much as possible, meaning you should not use global variables within blocks. We created all custom blocks (including the five you will fill out) so that any information you'l need will be passed into the block as input.

We encourage you to play around with these blocks (input different values and see what the output is)to better understand what they do and how they work —you can also go into each block and look at the code.This will help you when using these blocks in the rest of the project. Just be sure not to change what is inside each of them.

Suggestions

Parts 3 and 4 will take a significant amount of your time spent on the project. We recommend managing your time to accommodate for the influx of difficulty on the latter half of project 3. A good mental checkpoint is to have part 2 done by Friday. These are merely suggestions based on the experience of students from previous semesters.

Part 1:Populating the Board

In this section of the project,you should fill out the 'add 2 or 4 to _'block. The value 2 should have a 75%chance of being added,and the value 4 should have a 25%chance.These values should be added to a randomly-selected empty space on the board.

Input: board-a 2048 game board with at least one empty space

Output: a copy of board with an added value at a random location

Make sure you aren't modifying the original board when working on this. Your output should be a new copy of the board,and should not update the existing board.Updating the existing board is done for you in the provided game code.

Hint: Stuck? Check out some of the existing blocks in Snap! How will you find where to insert the value in the board?Are there any blocks we provide that could help?

Part 2:Rotating the Board

In this part, you should fill out the 'rotate_clockwise' block, which takes in a board and returns a copy of the board that is the result of rotating the input board 90 degrees clockwise.(You will lose points if you rotate anti-clockwise.)

Input: board-a 2048 game board with at least one empty space

Output: a copy of board that has been rotated 90 degrees clockwise

Make sure you aren't modifying the original board when working on this. Your output should be a new copy of the board,and should not update the existing board.Updating the existing board is done for you in the provided game code.

Hint: Take a look at the 'rotated row','rotated column''size of board',and 'copy of'blocks if you're not sure how to do something!In particular,the 'copy of' block will let you duplicate the contents of a board and then update it separately from the original.

Part 3:Merging

In this section of the  project,you'll  be  filling  out  two  blocks:'merge  column_of_up'and  'merge  up_.It  is  highly  recommended  that  you  make  helper  blocks as part of your implementation of 'merge column_of_up!Note that you can create helper blocks by right clicking in the scripting area and selecting“make a block..."

This article breaks down the components of merging a singgle column,which you should mimic with your implementation.Also,make sure that you're

maintaining the  abstraction  provided  by'merge  column of up'when you  build  'merge  up 'which is to say try to use 'merge column of up'while coding  up  'merge  up .

'merge column of up' Input: col  (number,1is  the  leftmost  column),board-a  2048  game   board Output: a copy of the board in which column col has been completely merged up

'merge  up'Input: board-a 2048 game  board at some point in the game Output: a copy of board in which all columns have been merged up

Make sure you aren't modifying the original board when working on this.Your output should be a new version of the board,and should not update the existing board.Updating the existing board is done for you in the provided game code.Note that we only need one block that merges upward (rather than four  blocks that each  merge  left,right,up,down)because we  have  the  'rotate clockwise'block.If we want to  merge  left,for  example,we  can first  rotate the board clockwise 90 degrees,merge up,and then rotate the board clockwise 270 degrees.The provided skeleton code implements this for you,though!

Hint:Stuck?Check out some of the existing blocks in Snap!How will you find where to insert the value in the board?Are there any blocks we provide that could  help?

Part 4:Ending the Game

In this part of the project,you'll be filling in the 'no moves left for_?'block,which should report False when there are still merges available on the board,and True when the board cannot be merged further.Keep in mind that the board can be full and there can still be moves available.

Input: board-a  2048  game  board

Output: whether or not the board can be merged further(Boolean)

Make sure you aren't modifying the original board when working on this.Your output should be a Boolean,ie,True/False value signifying whether the game is over  or  not.Hint:We  found  the"cascade"block  helpful …


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp