CS106A Assignment3: Breakout——浅谈自上而下的设计体验

本文作者在完成斯坦福大学CS106A课程的Breakout游戏编程作业中,体会到自上而下的设计思想的重要性。通过将复杂问题分解为小问题,使得程序设计更为清晰。作者分享了如何通过分解任务、添加注释来组织代码和避免编程过程中的迷失。文章最后,作者提供了自己的代码并欢迎读者提出建议。
摘要由CSDN通过智能技术生成

斯坦福大学CS106A编程方法学的第三次作业,Breakout,我自己写好了代码,并且能够完整运行。从编写这个程序的过程中学习到了很多的东西,比如各种GObject的创建、使用、常用方法等等。但是我觉得收获最大的还是一种编程设计思想:自上而下的设计。


我一开始写程序的时候写着写着就乱了,不知道下一步应该做什么。CS106A的作业要求上面已经做了很多的分解工作,但是每一步的具体方法对我来说依然是一个很大的挑战。后来,开始把注意力放在了如何设计程序上,而不是如何写出最终的代码。我认为,自上而下的设计就是把很复杂的问题高度抽象化,把一个庞大的问题简单直观的分解成几个较为简单明了的问题,然后不断的进行分解,直到最终的问题可以用简洁的代码表达出来。我最终的程序中,run()方法里只有两行:setup()用于初始化游戏,play()用于进行游戏。这样的分解,也为之后思考的问题提供了不少的便利。

在实际写代码的过程中,即使把程序设计好了,还是很容易迷失方向,在游戏中尤其体现在时间的先后关系上。后来,我开始在程序中添加大量的注释,这样才解决了容易迷失方向这个问题。在实际编写代码的时候,在每一个方法前用注释标明这个方法具体要做的几件事情,然后一件件的写出代码。这个过程实际上也是一种对问题的自上而下的分解,不仅可以让自己知道应该写出那些内容,也加深了对于所要解决的问题的思考。

下面就把我的代码贴出来,肯定有写的不到位的地方,也希望大家能够指出来,大家共同进步。

import acm.graphics.*;
import acm.program.*;
import acm.util.*;

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Breakout extends GraphicsProgram {

/** Width and height of application window in pixels */
	public static final int APPLICATION_WIDTH = 400;
	public static final int APPLICATION_HEIGHT = 600;

/** Dimensions of game board (usually the same) */
	private static final int WIDTH = APPLICATION_WIDTH;
	private static final int HEIGHT = APPLICATION_HEIGHT;

/** Dimensions of the paddle */
	private static final int PADDLE_WIDTH = 60;
	private static final int PADDLE_HEIGHT = 10;

/** Offset of the paddle up from the bottom */
	private static final int PADDLE_Y_OFFSET = 30;

/** Number of bricks per row */
	private static final int NBRICKS_PER_ROW = 10;

/** Number of rows of bricks */
	private static final int NBRICK_ROWS = 10;

/**Number of bricks */
	private static  int brickNum = NBRICKS_PER_ROW * NBRICK_ROWS;
/** Separation between bricks */
	private static final int BRICK_SEP = 4;

/** Width of a brick */
	private static final int BRICK_WIDTH =
	  (WIDTH - (NBRICKS_PER_ROW - 1) * BRICK_SEP) / NBRICKS_PER_ROW;

/** Height of a brick */
	private static final int BRICK_HEIGHT = 8;

/** Radius of the ball in pixels */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值