Автор работы: Пользователь скрыл имя, 27 Января 2013 в 04:14, лабораторная работа
Разработать игру согласно варианту задания.
Игра “кто вперед”
Два игрока стартуют в левом верхнем углу поля 9*9 и движутся к центру поля. Победит тот, кто придет первым. Положение первого игрока можно отмечать “+”, второго “*”, если оба в одной клетке – “0”.
Игроки могут ходить на одну или две клетки по спирали к центру (игрок вводит, соответственно 1 или 2).
1. Постановка задачи 4
2. Описание структуры пользовательского меню 4
3. Описание структуры классов 5
4. Описание методов классов и спецификация локальных переменных 6
Поля 6
Методы 6
Класс GameEngine 6
Поля 6
Методы 6
Класс ButListener 6
Поля 6
Методы 6
Класс Battlefield 6
Поля 6
Методы 6
Класс ImgBut 7
Поля 7
Методы 7
Класс Points 7
Поля 7
Методы 7
Класс SpecPoints 7
Поля 7
Методы 7
Класс Player 7
Поля 7
Методы 7
Класс DisplayPanel 7
Поля 8
Методы 8
Класс ControlPanel 8
Поля 8
Методы 8
5. Таблица тестов 8
6. Результаты тестирования 8
Тест №1 8
Тест №2 10
Тест №3 11
7. Листинги программ 12
Класс GameEngine 12
Класс ButListener 3
Класс Battlefield 3
Класс ImgBut 5
Класс Points 5
Класс SpecPoints 5
Класс Player 6
Класс DisplayPanel 7
Класс ControlPanel 7
pointsArr[pointsNumArr[
}
pointsArr[pointsNumArr[1]].
pointsArr[pointsNumArr[81]].
for (int i = 1; i <= 5; i++) {
pointsArr[pointsNumArr[
}
for (int i = 1; i <= 81; i++) {
pointsArr[i].setIcon(
}
}
/**
* устанваливает новые значения
*/
public static void setNewParameters() {
//////////////////////////////
/**
* генерируем случайные номера 5 особых точек
*/
Random random = new Random();
int k=1;
boolean onlyOne;
while (k<=5) {
onlyOne=true;
int num=random.nextInt(79)+2;
for (int m = 1; m <= 5; m++) {
if(num==pointsSpecNumArr[m]){
onlyOne=false;
}
}
if(onlyOne==true){
pointsSpecNumArr[k]=num;
pointsArr[pointsNumArr[num]]=
k++;
}
}
//////////////////////////////
/**
* создаём массив точек и добавляем на поле
*/
pointsArr[pointsNumArr[1]]=new
Points("H:\\Учёба\\
for (int i = 2; i <= 80; i++) {
if (pointsArr[pointsNumArr[i]]==
pointsArr[pointsNumArr[i]]=new Points();
}
}
pointsArr[pointsNumArr[81]]=
/**
* теперь добавляем точки на поле с менеджером GridLayout
*/
for (int i = 1; i <= 81; i++) {
DisplayPanel.BF.add(pointsArr[
}
//////////////////////////////
DisplayPanel.BF.setIcon(new
ImageIcon("H:\\Учёба\\
DisplayPanel.BF.setBounds(0, 0, 477, 297);
DisplayPanel.BF.setVisible(
GridLayout GridLay = new GridLayout(9, 9);
DisplayPanel.BF.setLayout(
pointsArr[pointsNumArr[
pointsArr[pointsNumArr[
Player1.Opponent=Player2;
Player2.Opponent=Player1;
CurrPlayer=Player1;
Player1.color= Color.RED;
Player2.color= Color.BLUE;
refresh();
}
/**
* Сбрасывает все значения
*/
static void setDefault() {
DisplayPanel.BF.removeAll();
DisplayPanel.BF.setIcon(new
ImageIcon("H:\\Учёба\\
DisplayPanel.BF.repaint();
CurrPlayer=null;
pointsSpecNumArr=new int[6];
pointsArr=new Points[82];//задаём длину массива точек
Player1=new Player("Player1","H:\\Учёба\\
Player2=new Player("Player2","H:\\Учёба\\
}
}
Класс ImgBut
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package whoisfirst;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
/**
* Класс кнопок с иконкой
* @author Администратор
*/
public class ImgBut extends JLabel {
public ImgBut(String ImageDirectory) {
this.addMouseListener(new butListener());
this.setIcon(new ImageIcon(ImageDirectory));
}
/**
* Выполнить действие по нажатию кнопки
* @param But
*/
public void action(ImgBut But) {
if(ControlPanel.imgbut1==But){
GameEngine.doStep(1);//сделать шаг
}
if(ControlPanel.imgbut2==But){
GameEngine.doStep(2);//сделать 2 шага
}
if(ControlPanel.imgbut3==But){
GameEngine.beginGame();//
}
if(ControlPanel.imgbut4==But){
GameEngine.finishGame();//
}
if(ControlPanel.imgbut5==But){
System.exit(0);//закрыть программу
}
}
}
Класс Points
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package whoisfirst;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
/**
*
* @author Администратор
*/
public class Points extends JLabel{
public boolean visible;
public ImageIcon Image=new ImageIcon();
public Points(){
this.setBounds(0, 0, 53, 33);
}
public Points(String ImageDirectory) {
this.addMouseListener(new butListener());
Image=new ImageIcon(ImageDirectory);
this.setIcon(Image);
}
public void refresh(int PointType){
}
public void showPointEffect(int specPointType){
}
}
Класс SpecPoints
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package whoisfirst;
import javax.swing.ImageIcon;
/**
*
* @author Администратор
*/
public class SpecPoints extends Points {
final public static int catchUp = 1;
final public static int extraStep = 2;
final public static int goBackward = 3;
final public static int goForward = 4;
final public static int skipStep = 5;
public SpecPoints(int specPointType) {
refresh(specPointType);
}
@Override
public void refresh(int specPointType){
switch (specPointType) {
case catchUp:
if(visible){
Image=new ImageIcon("H:\\Учёба\\
}
break;
case extraStep:
if(visible){
Image=new ImageIcon("H:\\Учёба\\
}
break;
case goBackward:
if(visible){
Image=new ImageIcon("H:\\Учёба\\
}
break;
case goForward:
if(visible){
Image=new ImageIcon("H:\\Учёба\\
}
break;
case skipStep:
if(visible){
Image=new ImageIcon("H:\\Учёба\\
}
break;
}
}
@Override
public void showPointEffect(int specPointType){
switch (specPointType) {
case catchUp:
GameEngine.catchUp();
break;
case extraStep:
GameEngine.extraStep();
break;
case goBackward:
GameEngine.goBackward();
break;
case goForward:
GameEngine.goForward();
break;
case skipStep:
GameEngine.skipStep();
break;
}
}
}
Класс Player
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package whoisfirst;
import java.awt.Color;
import javax.swing.ImageIcon;
/**
*
* @author Администратор
*/
public class Player extends Points{
public int steps;
public Color color;
public String name;
public int curPosition;
public Player Opponent;
public Player(String pName,String ImageDirectory){
this.curPosition=1;
this.name=pName;
Image=new ImageIcon(ImageDirectory);
}
public void stayOnPoint(){
for (int i = 1; i <= 5; i++) {
if(Battlefield.pointsArr[
Battlefield.pointsArr[
Battlefield.pointsArr[
}
}
Battlefield.refresh();
}
public void moveForward(){
if(curPosition==81){
}else{
curPosition++;
}
}
public void moveBackward(){
if(curPosition==1){
}else{
curPosition--;
}
}
}
Класс DisplayPanel
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package whoisfirst;
import java.awt.Color;
import javax.swing.JPanel;
/**
* Класс верхней панели
* @author Администратор
*/
public class DisplayPanel extends JPanel{
public static Battlefield BF=new Battlefield();
public DisplayPanel(){
this.setLayout(null);
this.setSize(500,297);
this.setLocation(7, 10);
this.setBackground(Color.
this.add(BF);
}
}
Класс ControlPanel
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package whoisfirst;
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
* Класс нижней управляющей
* @author Администратор
*/
public class ControlPanel extends JPanel {
public static ImgBut imgbut1 = new ImgBut("H:\\Учёба\\
public static ImgBut imgbut2 = new ImgBut("H:\\Учёба\\
public static ImgBut imgbut3 = new ImgBut("H:\\Учёба\\
public static ImgBut imgbut4 = new ImgBut("H:\\Учёба\\
public static ImgBut imgbut5 = new ImgBut("H:\\Учёба\\
public static JLabel timeLabel=new JLabel();
public static JLabel playerLabel=new JLabel();
public static JLabel playerStepsLabel=new JLabel();
public ControlPanel() {
JPanel leftPart = new JPanel(new FlowLayout(1, 10, 5));
JPanel rightPart = new JPanel(new FlowLayout(1, 0, 0));
JPanel centerPart = new JPanel(new FlowLayout(0, 5, 0));
leftPart.setBounds(0, 0, 198, 97);
leftPart.setBackground(Color.
rightPart.setBounds(395, 51, 89, 41);
centerPart.setBackground(
centerPart.setBounds(200, 0, 170, 97);
this.setLayout(null);
this.setBounds(0, 315, 500, 97);
this.setBackground(Color.
this.add(leftPart);
this.add(rightPart);
this.add(centerPart);
leftPart.add(imgbut1);
leftPart.add(imgbut2);
leftPart.add(imgbut3);
leftPart.add(imgbut4);
rightPart.add(imgbut5);
centerPart.add(timeLabel);
centerPart.add(playerLabel);
centerPart.add(
imgbut1.setVisible(false);
imgbut2.setVisible(false);
timeLabel.setText("Время игры: 0 сек");
timeLabel.setForeground(Color.
playerLabel.setForeground(
playerStepsLabel.
}
}
Информация о работе Лабораторная работа по "Программированию"