麻将桌怎么写程序

时间:2025-01-24 16:17:15 单机游戏

编写麻将桌程序需要考虑以下几个方面:

定义麻将桌的尺寸和布局

麻将桌通常是一个长方形,可以定义其长度 `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';

}

}

}

}

```

建议

输入验证:

确保用户输入的数据是有效的,例如长和宽在合理范围内,圆心坐标和半径也是合理的。

优化性能:

如果桌子尺寸较大,可以考虑使用更高效的算法来绘制圆和正方形。

扩展功能:

可以进一步添加功能,例如显示玩家位置、麻将牌等。

通过以上步骤和示例代码,你可以编写一个简单的麻将桌程序。根据具体需求,可以进一步扩展和优化程序。