├── .idea ├── .name ├── copyright │ └── profiles_settings.xml ├── scopes │ └── scope_settings.xml ├── encodings.xml ├── vcs.xml ├── modules.xml ├── compiler.xml ├── misc.xml └── workspace.xml ├── images ├── PCBomb.png ├── Peasant.png ├── PeasantBomb.png └── PCMasterRace.png ├── out └── production │ └── PeasantWars │ ├── Game.class │ ├── Game$1.class │ ├── Player.class │ ├── Scene.class │ ├── Direction.class │ ├── Game$Tick.class │ ├── Player$1.class │ ├── Application.class │ ├── Collisions.class │ ├── InputManager.class │ └── Application$1.class ├── src ├── Direction.java ├── Collisions.java ├── InputManager.java ├── Application.java ├── Game.java ├── Player.java └── Scene.java ├── PeasantWars.iml └── README.md /.idea/.name: -------------------------------------------------------------------------------- 1 | PeasantWars -------------------------------------------------------------------------------- /images/PCBomb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/images/PCBomb.png -------------------------------------------------------------------------------- /images/Peasant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/images/Peasant.png -------------------------------------------------------------------------------- /images/PeasantBomb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/images/PeasantBomb.png -------------------------------------------------------------------------------- /images/PCMasterRace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/images/PCMasterRace.png -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /out/production/PeasantWars/Game.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/Game.class -------------------------------------------------------------------------------- /out/production/PeasantWars/Game$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/Game$1.class -------------------------------------------------------------------------------- /out/production/PeasantWars/Player.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/Player.class -------------------------------------------------------------------------------- /out/production/PeasantWars/Scene.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/Scene.class -------------------------------------------------------------------------------- /out/production/PeasantWars/Direction.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/Direction.class -------------------------------------------------------------------------------- /out/production/PeasantWars/Game$Tick.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/Game$Tick.class -------------------------------------------------------------------------------- /out/production/PeasantWars/Player$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/Player$1.class -------------------------------------------------------------------------------- /out/production/PeasantWars/Application.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/Application.class -------------------------------------------------------------------------------- /out/production/PeasantWars/Collisions.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/Collisions.class -------------------------------------------------------------------------------- /out/production/PeasantWars/InputManager.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/InputManager.class -------------------------------------------------------------------------------- /out/production/PeasantWars/Application$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoR/PeasantWars/master/out/production/PeasantWars/Application$1.class -------------------------------------------------------------------------------- /src/Direction.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This enumeration represents a direction 3 | */ 4 | public enum Direction { 5 | NORTH, 6 | EAST, 7 | SOUTH, 8 | WEST 9 | } 10 | -------------------------------------------------------------------------------- /.idea/scopes/scope_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /PeasantWars.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/Collisions.java: -------------------------------------------------------------------------------- 1 | import java.awt.*; 2 | 3 | /** 4 | * Created by Leon on 12/13/14. 5 | */ 6 | public class Collisions { 7 | 8 | boolean TopCollision; 9 | boolean BottomCollision; 10 | boolean RightCollision; 11 | boolean LeftCollision; 12 | 13 | int x; 14 | int y; 15 | 16 | public Collisions(Player player) { 17 | TopCollision = checkCollision(player); 18 | BottomCollision = checkCollision(player); 19 | RightCollision = checkCollision(player); 20 | LeftCollision = checkCollision(player); 21 | } 22 | 23 | private boolean checkCollision(Player player) { 24 | x = player.position.x; 25 | y = player.position.y; 26 | 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | PeasantWars 2 | =========== 3 | 4 | By Leon Grasmeijer and Cor Pruijs 5 | 6 | 7 | classes 8 | ------- 9 | 10 |
11 | Application             // the Application class, extends JFrame and will be an instance of the game
12 |     Game                // the Game class, extends JPanel and will be used to render the game
13 |         Scene           // this class will contain all level data, with tiles
14 |             Tile        // a tile is a unit on the map, and will contain data like it's position and if it collides with the player
15 |             Player      // the player, a base class for Peasant and Hero
16 |                 Peasant // a player subclass which is very weak
17 |                 Hero    // a player subclass that uses superior technology and is a lot stronger
18 | 
-------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | -------------------------------------------------------------------------------- /src/InputManager.java: -------------------------------------------------------------------------------- 1 | 2 | import java.awt.event.KeyEvent; 3 | import java.awt.event.KeyListener; 4 | 5 | /** 6 | * Created by cor on 13-12-14. 7 | */ 8 | public class InputManager implements KeyListener { 9 | 10 | // booleans containing key data 11 | public boolean up = false; 12 | public boolean down = false; 13 | public boolean right = false; 14 | public boolean left = false; 15 | 16 | 17 | // it's required to override keyTyped because we're implementing KeyListener 18 | @Override 19 | public void keyTyped(KeyEvent e) {} 20 | 21 | @Override 22 | public void keyPressed(KeyEvent e) { 23 | 24 | //update key data 25 | int key = e.getKeyCode(); 26 | 27 | if (key == KeyEvent.VK_UP) { up = true; } 28 | if (key == KeyEvent.VK_DOWN) { down = true; } 29 | if (key == KeyEvent.VK_RIGHT) { right = true; } 30 | if (key == KeyEvent.VK_LEFT) { left = true; } 31 | } 32 | 33 | @Override 34 | public void keyReleased(KeyEvent e) { 35 | 36 | //update key data 37 | int key = e.getKeyCode(); 38 | 39 | if (key == KeyEvent.VK_UP) { up = false; } 40 | if (key == KeyEvent.VK_DOWN) { down = false; } 41 | if (key == KeyEvent.VK_RIGHT) { right = false; } 42 | if (key == KeyEvent.VK_LEFT) { left = false; } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/Application.java: -------------------------------------------------------------------------------- 1 | import java.awt.EventQueue; 2 | import javax.swing.*; 3 | 4 | 5 | /** 6 | * The Application class is the entry point of the game 7 | */ 8 | public class Application extends JFrame { 9 | 10 | /** 11 | * The main Application initializer 12 | */ 13 | public Application() { 14 | initUI(); 15 | } 16 | 17 | /** 18 | * Initialize the UI 19 | */ 20 | 21 | private Game game; 22 | private void initUI() { 23 | 24 | // UI Initialization 25 | 26 | // Add a new instance of the Game to the Application's JFrame and configure it 27 | game = new Game(); 28 | add(game); 29 | setTitle("PCMasterRace"); 30 | 31 | // Quit the program when the window is closed 32 | setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 33 | 34 | // center the window on the screen 35 | setLocationRelativeTo(null); 36 | 37 | // disable window resizing 38 | setResizable(false); 39 | 40 | addKeyListener(game.inputManager); 41 | 42 | // set the JFrame to the correct size (specified by the Game JPanel) 43 | pack(); 44 | } 45 | 46 | public static void main(String[] args) { 47 | 48 | // create an instance of the application and make it visible 49 | EventQueue.invokeLater(new Runnable() { 50 | @Override 51 | public void run() { 52 | Application ex = new Application(); 53 | ex.setVisible(true); 54 | ex.requestFocus(); 55 | ex.setLocationRelativeTo(null); 56 | } 57 | 58 | }); 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/Game.java: -------------------------------------------------------------------------------- 1 | import java.awt.*; 2 | import java.awt.event.*; 3 | import java.util.*; 4 | import java.util.Timer; 5 | import javax.swing.*; 6 | 7 | 8 | /** 9 | * The Game class is the JPanel where the game takes place. 10 | */ 11 | public class Game extends JPanel { 12 | 13 | // game objects 14 | private Scene scene; 15 | private Player player; 16 | 17 | // animation 18 | private Timer timer; 19 | private final int INITIAL_DELAY = 100; 20 | private final int PERIOD_INTERVAL = 16; 21 | 22 | // input 23 | public InputManager inputManager = new InputManager(); 24 | 25 | // JPanel 26 | private Dimension size = new Dimension(540,540); 27 | 28 | 29 | 30 | public Game() { 31 | initGame(); 32 | } 33 | 34 | 35 | private void initGame() { 36 | // set the size of the JPanel 37 | setPreferredSize(size); 38 | 39 | // configure game objects 40 | scene = new Scene(size); 41 | player = new Player(); 42 | 43 | //configure timer for animation 44 | timer = new Timer(); 45 | timer.scheduleAtFixedRate(new Tick(), INITIAL_DELAY, PERIOD_INTERVAL); 46 | 47 | 48 | // configure input 49 | addKeyListener(inputManager); 50 | 51 | } 52 | 53 | private void update() { 54 | player.update(inputManager); 55 | } 56 | 57 | @Override 58 | public void paintComponent(Graphics g) { 59 | super.paintComponent(g); 60 | 61 | //enable anti-aliasing 62 | Graphics2D g2d = (Graphics2D) g; 63 | RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 64 | rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); 65 | g2d.setRenderingHints(rh); 66 | 67 | scene.draw(g2d); 68 | player.draw(g2d); 69 | } 70 | 71 | private class Tick extends TimerTask { 72 | 73 | // main game loop, gets called approximately 60 times per second 74 | @Override 75 | public void run() { 76 | update(); 77 | repaint(); 78 | } 79 | } 80 | 81 | } 82 | 83 | -------------------------------------------------------------------------------- /src/Player.java: -------------------------------------------------------------------------------- 1 | import javax.swing.*; 2 | import java.awt.*; 3 | 4 | /** 5 | * Player class 6 | */ 7 | public class Player { 8 | 9 | public Dimension size; 10 | public Point position; 11 | 12 | public int moveSpeed; 13 | 14 | /** 15 | * The default initializer 16 | */ 17 | public Player() { 18 | position = new Point(200, 200); 19 | size = new Dimension(60, 60); 20 | moveSpeed = 10; 21 | } 22 | 23 | /** 24 | * Move the player 25 | * @param direction the direction to move the player in 26 | * @param distance the distance for the player to walk 27 | */ 28 | public void move(Direction direction, int distance){ 29 | switch (direction) { 30 | case NORTH: 31 | position.y -= distance; 32 | break; 33 | case EAST: 34 | position.x += distance; 35 | break; 36 | case SOUTH: 37 | position.y += distance; 38 | break; 39 | case WEST: 40 | position.x -= distance; 41 | break; 42 | } 43 | } 44 | 45 | /** 46 | * Draw the player 47 | * @param g2d the Graphics2D object to draw the player to 48 | */ 49 | public void draw(Graphics2D g2d) { 50 | // Image Peasant = new ImageIcon("images/Peasant.png").getImage(); 51 | // g2d.drawImage(Peasant, position.x, position.y, 60, 60, null); 52 | } 53 | 54 | /** 55 | * Update the player 56 | * @param inputManager the game's input manager 57 | */ 58 | public void update(InputManager inputManager) { 59 | 60 | // move the player 61 | if (inputManager.up) { 62 | this.move(Direction.NORTH, moveSpeed); 63 | } 64 | 65 | if (inputManager.down) { 66 | this.move(Direction.SOUTH, moveSpeed); 67 | } 68 | 69 | if (inputManager.left) { 70 | this.move(Direction.WEST, moveSpeed); 71 | } 72 | 73 | if (inputManager.right) { 74 | this.move(Direction.EAST, moveSpeed); 75 | } 76 | } 77 | 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/Scene.java: -------------------------------------------------------------------------------- 1 | import javax.swing.*; 2 | import java.awt.*; 3 | 4 | /** 5 | * 6 | * Created by cor on 12-12-14. 7 | */ 8 | public class Scene { 9 | 10 | private Dimension resolution; 11 | private Dimension tileSize; // a ninth of the resolution since the level is 9*9 tiles 12 | 13 | public static int[][] map = new int[9][9]; // a 2D array containing the level data 14 | 15 | public Scene() { 16 | this.resolution = new Dimension(540, 540); 17 | // set the tile size to 1/9 of the resolution 18 | this.tileSize = new Dimension(this.resolution.width / 9, this.resolution.height / 9); 19 | 20 | 21 | map[2][4] = 1; // example data 22 | 23 | } 24 | 25 | public Scene(Dimension resolution) { 26 | this.resolution = resolution; 27 | this.tileSize = new Dimension(this.resolution.width / 9, this.resolution.height / 9); 28 | 29 | for (int i = 1; i < 9; i += 2){ 30 | 31 | for (int j = 1; j < 9; j += 2){ 32 | map[i][j] = 1; 33 | } 34 | } 35 | 36 | map[2][5] = 2; 37 | } 38 | 39 | public void draw(Graphics2D g2d) { 40 | 41 | // iterate over vertical rows 42 | for (int x = 0; x < 9; x++) { 43 | 44 | //iterate through vertical row 45 | for (int y = 0; y < 9; y++) { 46 | 47 | // check the integer at the position and set the color accordingly 48 | if (map[x][y] == 0) { 49 | g2d.setColor(new Color(122, 83, 43)); 50 | g2d.fillRect(x * tileSize.width, y * tileSize.height, tileSize.width, tileSize.height); 51 | } else if (map[x][y] == 1) { 52 | g2d.setColor(new Color(0, 0, 0)); 53 | g2d.fillRect(x * tileSize.width, y * tileSize.height, tileSize.width, tileSize.height); 54 | } else if (map[x][y] == 2) { 55 | g2d.setColor(new Color(122, 83, 43)); 56 | g2d.fillRect(x * tileSize.width, y * tileSize.height, tileSize.width, tileSize.height); 57 | Image Peasant = new ImageIcon("images/Peasant.png").getImage(); 58 | g2d.drawImage(Peasant, tileSize.width * x, y * tileSize.height, tileSize.height, tileSize.width, null); 59 | } 60 | } 61 | } 62 | 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 65 | 66 | 73 | 74 | 75 | 76 | 94 | 101 | 102 | 103 | 114 | 115 | 116 | 129 | 130 | 131 | 132 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | localhost 153 | 5050 154 | 155 | 156 | 157 | 158 | 159 | 160 | 1.8 161 | 162 | 167 | 168 | 169 | 170 | 171 | 172 | -------------------------------------------------------------------------------- /.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 127 | 128 | 139 | 140 | 141 | true 142 | 143 | 144 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 181 | 182 | 183 | 184 | 187 | 188 | 191 | 192 | 193 | 194 | 197 | 198 | 201 | 202 | 205 | 206 | 207 | 208 | 211 | 212 | 215 | 216 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 256 | 257 | 258 | 273 | 274 | 275 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 306 | 307 | 314 | 315 | 316 | 317 | 318 | 319 | 330 | 331 | 332 | 333 | 351 | 358 | 359 | 360 | 361 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | true 384 | 385 | 386 | 387 | 388 | 409 | 422 | 423 | 424 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 457 | 460 | 462 | 463 | 464 | 465 | 474 | 478 | 479 | 480 | 497 | 498 | 499 | 512 | 513 | 514 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | localhost 546 | 5050 547 | 548 | 549 | 550 | 551 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 1418395581829 562 | 572 | 573 | 1418397989598 574 | 578 | 579 | 1418399679030 580 | 584 | 585 | 1418399953044 586 | 590 | 591 | 1418422508211 592 | 596 | 597 | 1418495865893 598 | 602 | 603 | 1421056433140 604 | 608 | 611 | 612 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 651 | 654 | 655 | 656 | 658 | 659 | 662 | 663 | 664 | 665 | 666 | 667 | 669 | 670 | 671 | 672 | 673 | 674 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | --------------------------------------------------------------------------------