|
Screen |
|
1 // joi/5/shapes/Screen.java 2 // 3 // 4 // Copyright 1998-2001 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 5 12 */ 13 14 public class Screen 15 { 16 private static final char FRAMECHAR = '+'; 17 private static final char BLANK = ' '; 18 private int width; 19 private int height; 20 private char[][] pixels; 21 22 /** 23 * Construct a screen. 24 * 25 * @param width the number of pixels in the x direction. 26 * @param height the number of pixels in the y direction. 27 */ 28 29 public Screen( int width, int height ) 30 { 31 this.width = width; 32 this.height = height; 33 pixels = new char[width][height]; 34 clear(); 35 } 36 37 /** 38 * Clear the Screen, painting a blank at every pixel. 39 */ 40 41 public void clear() 42 { 43 for (int x = 0; x < width; x++) 44 for ( int y = 0; y < height; y++ ) 45 pixels[x][y] = BLANK; 46 } 47 48 /** 49 * Paint a character pixel at position (x,y). 50 * 51 * @param c the character to be painted. 52 * @param x the (horizontal) x position. 53 * @param y the (vertical) y position. 54 */ 55 56 public void paintAt( char c, int x, int y ) 57 { 58 if ( 0 <= x && x < width && 59 0 <= y && y < height) 60 pixels[x][y] = c; 61 // otherwise off the Screen - nothing is painted 62 } 63 64 /** 65 * Draw this Screen on a Terminal. 66 * 67 * @param t the Terminal on which to draw this Screen. 68 */ 69 70 public void draw( Terminal t ) 71 { 72 for ( int col = -1; col < width+1 ; col++ ) // top edge 73 t.print(FRAMECHAR); 74 t.println(); 75 for ( int row = 0; row < height; row++ ) { 76 t.print(FRAMECHAR); // left edge 77 for ( int col = 0; col < width; col++ ) 78 t.print( pixels[col][row] ); 79 t.println( FRAMECHAR ); // right edge 80 } 81 for ( int col = -1; col < width+1 ; col++ ) // bottom edge 82 t.print(FRAMECHAR); 83 t.println(); 84 } 85 } 86
|
Screen |
|