我需要帮助重新安排一个程序,我必须使用类构造函数方法......等等。这是一场战舰游戏。我不太清楚我需要什么类别,构造和方法。
import java.util.Scanner;
public class BattleshipLab {
Scanner input = new Scanner(System.in);
public static final boolean DEBUG = false;
public static void breakln() {
System.out.println("_____________________________________");
System.out.println("");
}
public static void createBoard(String[][] board) {
for (String[] board1 : board) {
for (int c = 0; c < board[0].length; c++) {
board1[c] = "~";
}
}
}
public static void showBoard(String[][] board) {
breakln();
for (String[] board1 : board) {
if (DEBUG == true) {
for (int c = 0; c < board[0].length; c++) {
System.out.print(" " + board1[c]);
}
System.out.println("");
} else {
for (int c = 0; c < board[0].length; c++) {
if (board1[c].equals("S")) {
System.out.print(" " + "~");
} else {
System.out.print(" " + board1[c]);
}
}
System.out.println("");
}
}
breakln();
}
public static void createShip(String[][] board, int size) {
if (Math.random() < 0.5) {
int col = (int) (Math.random() * 5);
int row = (int) (Math.random() * 7);
for (int i = 0; i < size; i++) {
board[row][col + i] = "S";
}
} else {
int col = (int) (Math.random() * 7);
int row = (int) (Math.random() * 5);
for (int i = 0; i < size; i++) {
board[row + i][col] = "S";
}
}
}
public static int userFire(String[][] board, int hits, int torps) {
Scanner input = new Scanner(System.in);
int row, col;
System.out.println("You have: " + torps + " torpedos left!");
System.out.println("Select a row to fire in: ");
row = input.nextInt();
while (row > 8 || row < 1) // Error checking for row
{
System.out.println("Enter a valid row (1 -> 8)");
row = input.nextInt();
}
System.out.println("Select a column to fire in: ");
col = input.nextInt();
while (col > 8 || col < 1) // Error checking for column
{
System.out.println("Enter a valid col (1 -> 8)");
col = input.nextInt();
}
if (board[row - 1][col - 1].equals("S")) {
hits++;
System.out.println("~~~~~~~ HIT ~~~~~~~");
board[row - 1][col - 1] = "!";
} else {
System.out.println("~~~~~~~ MISS ~~~~~~~");
board[row - 1][col - 1] = "M";
}
return hits;
}
public static void finall(int hits, int torps) {
if (hits < 4) {
System.out.println("Sorry, but you lost because you didn't sink the ship.");
}
if (torps < 1) {
System.out.println("You have lost all your torpedos");
} else if (hits >= 4) {
System.out.println("You have beaten the game battleship, Thanks for playing!");
}
System.out.println("Good game, well played!");
}
public static void main(String[] arg) {
String[][] board = new String[8][8];
createBoard(board);
createShip(board, 4);
int torps = 15;
int hits = 0;
/// Starting real stuff
while (torps > 0 && hits < 4) {
showBoard(board);
hits = userFire(board, hits, torps);
torps--;
}
finall(hits, torps);
}
}
答案 0 :(得分:1)
欢迎使用Stack Overflow,Noah!
首先说几句:
现在已经不在了,我会给你一个正确的方向,看到你是Stack Overflow的新手。
在您的代码中,我们可以找到两个有趣的方法:
createBoard
createShip
请注意它们是如何从create
开始的?这是一个非常非常强烈的暗示,至少为这两个对象编写类可能是个好主意:
Board
Ship
说到方法,你当前的代码再次提供了一些指示。虽然我不确定是否会发射鱼雷之类的东西,但看起来您可能希望至少将showBoard()
转换为show
类的方法Board
。
现在,您需要的其他类和方法实际上取决于该游戏的规则(我不熟悉它),您希望它具有哪些功能,当然还有您希望如何实现它。可能的其他类可能是Torpedo
,但也许这些类只是您Ship
类的原始类型成员。另一个候选人可能是Tile
,Board
的基本构建块?
你必须从这里拿走它,真的。 Java Lessons on Classes and Objects会很有用 我希望这能让你开始。
答案 1 :(得分:0)
好的,当你开始编写OOP时,你应该分析你的问题并将其分解。游戏的哪些部分组成,它们的功能和属性是什么,这些部分如何相互作用?我会帮助你开始,考虑制作电路板和电池类。
在OOP中,您喜欢Java,您需要创建一个您定义的对象(类)的新实例。所以,让我们说你创建了一个类:
class Shape {
int length, width;
String color ="";
}
要在main中使用Shape,请创建一个新实例
class Driver {
public static void main (String [] args){
//First you specify the type as your object name, then name the variable and lastly, you do new object.
Shape myShape = new Shape ();
}
}