|
Screen |
|
1 // joi/3/shapes/Screen.java 2 // 3 // 4 // Copyright 2003 Bill Campbell and Ethan Bolker 5 6 /** 7 * A Screen is a (width*height) grid of (character) 'pixels' 8 * on which we may paint various shapes. It can be drawn to 9 * a Terminal. 10 * 11 * @version 3 12 */ 13 14 public class Screen 15 { 16 /** 17 * The character used to paint the screen's frame. 18 */ 19 20 private static final char FRAMECHAR = '+'; 21 private static final char BLANK = ' '; 22 private int width; 23 private int height; 24 private char[][] pixels; 25 26 /** 27 * Construct a Screen. 28 * 29 * @param width the number of pixels in the x direction. 30 * @param height the number of pixels in the y direction. 31 */ 32 33 public Screen( int width, int height ) 34 { 35 this.width = width; 36 this.height = height; 37 pixels = new char[width][height]; 38 clear(); 39 } 40 41 /** 42 * Clear the Screen, painting a blank at every pixel. 43 */ 44 45 public void clear() 46 { 47 for (int x = 0; x < width; x++) { 48 for ( int y = 0; y < height; y++ ) { 49 pixels[x][y] = BLANK; 50 } 51 } 52 } 53 54 /** 55 * Paint a character pixel at position (x,y). 56 * 57 * @param c the character to be painted. 58 * @param x the (horizontal) x position. 59 * @param y the (vertical) y position. 60 */ 61 62 public void paintAt( char c, int x, int y ) 63 { 64 if ( 0 <= x && x < width && 65 0 <= y && y < height) { 66 pixels[x][y] = c; 67 } 68 // Otherwise off the Screen - nothing is painted. 69 } 70 71 /** 72 * How wide is this Screen? 73 * 74 * @return the width. 75 */ 76 77 public int getWidth() 78 { 79 return width; 80 } 81 82 /** 83 * How high is this Screen? 84 * 85 * @return the height. 86 */ 87 88 public int getHeight() 89 { 90 return height; 91 } 92 93 /** 94 * Draw this Screen on a Terminal. 95 * 96 * @param t the Terminal on which to draw this Screen. 97 */ 98 99 public void draw( Terminal t ) 100 { 101 for ( int col = -1; col < width+1 ; col++ ) { // top edge 102 t.print(FRAMECHAR); 103 } 104 t.println(); 105 for ( int row = 0; row < height; row++ ) { 106 t.print(FRAMECHAR); // left edge 107 for ( int col = 0; col < width; col++ ) { 108 t.print( pixels[col][row] ); 109 } 110 t.println( FRAMECHAR ); // right edge 111 } 112 for ( int col = -1; col < width+1 ; col++ ) { // bottom edge 113 t.print(FRAMECHAR); 114 } 115 t.println(); 116 } 117 } 118
|
Screen |
|