编写麻将桌程序需要考虑以下几个方面:
定义麻将桌的尺寸和布局
麻将桌通常是一个长方形,可以定义其长度 `w` 和宽度 `h`。
桌子可以分成 `w×h` 个方格,每个方格的大小为 `1×1`。
方格的中心点为其坐标,例如点 `(0,0)` 在左上角格子的中心,点 `(w-1,0)` 在左下角格子的中心,依此类推。
绘制麻将桌
根据给定的长和宽,可以创建一个二维数组或列表来表示麻将桌的每个格子。
如果需要贴麻将logo,需要提供圆心和半径,以及正方形的顶点坐标。根据这些信息,可以判断每个格子是否需要贴logo。
处理用户输入
程序需要接收用户输入,例如桌子的长和宽,以及圆形和矩形的信息。
可以使用 `Scanner` 类来读取用户输入。
洗牌功能
麻将游戏中,洗牌是一个重要环节。可以使用 `ShuffleMaJiang` 类来实现洗牌功能。
```java
import java.util.Scanner;
public class MahjongTable {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入麻将桌的长和宽(用空格分隔):");
int w = scanner.nextInt();
int h = scanner.nextInt();
System.out.print("请输入圆的圆心坐标和半径(用空格分隔):");
int xC = scanner.nextInt();
int yC = scanner.nextInt();
int r = scanner.nextInt();
System.out.print("请输入正方形的顶点坐标(用空格分隔):");
int x1 = scanner.nextInt();
int y1 = scanner.nextInt();
int x2 = scanner.nextInt();
int y2 = scanner.nextInt();
// 初始化麻将桌
char[][] table = new char[h][w];
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
table[i][j] = ' ';
}
}
// 绘制圆和正方形
drawCircle(table, xC, yC, r);
drawSquare(table, x1, y1, x2, y2);
// 输出麻将桌
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
System.out.print(table[i][j] == ' ' ? '/' : table[i][j]);
}
System.out.println();
}
}
private static void drawCircle(char[][] table, int xC, int yC, int r) {
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table.length; j++) {
if ((i - yC) * (i - yC) + (j - xC) * (j - xC) <= r * r) {
table[i][j] = 'C';
}
}
}
}
private static void drawSquare(char[][] table, int x1, int y1, int x2, int y2) {
for (int i = y1; i <= y2; i++) {
for (int j = x1; j <= x2; j++) {
table[i][j] = 'S';
}
}
}
}
```
建议
输入验证:
确保用户输入的数据是有效的,例如长和宽在合理范围内,圆心坐标和半径也是合理的。
优化性能:
如果桌子尺寸较大,可以考虑使用更高效的算法来绘制圆和正方形。
扩展功能:
可以进一步添加功能,例如显示玩家位置、麻将牌等。
通过以上步骤和示例代码,你可以编写一个简单的麻将桌程序。根据具体需求,可以进一步扩展和优化程序。