面向对象之我的世界编程代码
时间: 2023-08-06 15:05:50 浏览: 46
好的,下面是一个简单的面向对象的我的世界编程代码示例,它包含了玩家、方块和世界等类。
首先,我们定义一个玩家类Player,包含属性name和position,以及方法move()和placeBlock()。
```java
public class Player {
private String name;
private Position position;
public Player(String name, Position position) {
this.name = name;
this.position = position;
}
public void move(Direction direction) {
position = position.move(direction);
System.out.println(name + " moved to " + position);
}
public void placeBlock(Block block) {
World world = World.getInstance();
world.placeBlock(block, position);
System.out.println(name + " placed a " + block.getType() + " block at " + position);
}
}
```
接下来,我们定义一个方块类Block,包含属性type和color,以及方法getType()和getColor()。
```java
public class Block {
private String type;
private String color;
public Block(String type, String color) {
this.type = type;
this.color = color;
}
public String getType() {
return type;
}
public String getColor() {
return color;
}
}
```
然后,我们定义一个世界类World,单例模式,包含属性blocks,表示所有的方块,以及方法placeBlock()和removeBlock()。
```java
public class World {
private static World instance = new World();
private Block[][][] blocks;
private World() {
blocks = new Block[10][10][10];
}
public static World getInstance() {
return instance;
}
public void placeBlock(Block block, Position position) {
blocks[position.getX()][position.getY()][position.getZ()] = block;
}
public void removeBlock(Position position) {
blocks[position.getX()][position.getY()][position.getZ()] = null;
}
public Block getBlock(Position position) {
return blocks[position.getX()][position.getY()][position.getZ()];
}
}
```
最后,我们定义一个位置类Position,包含属性x、y和z,以及方法move()。
```java
public class Position {
private int x;
private int y;
private int z;
public Position(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public int getZ() {
return z;
}
public Position move(Direction direction) {
switch (direction) {
case NORTH:
return new Position(x, y, z - 1);
case EAST:
return new Position(x + 1, y, z);
case SOUTH:
return new Position(x, y, z + 1);
case WEST:
return new Position(x - 1, y, z);
case UP:
return new Position(x, y + 1, z);
case DOWN:
return new Position(x, y - 1, z);
default:
throw new IllegalArgumentException("Invalid direction: " + direction);
}
}
}
```
其中,方向枚举类Direction包含了六个方向:北、东、南、西、上、下。
```java
public enum Direction {
NORTH,
EAST,
SOUTH,
WEST,
UP,
DOWN
}
```
这样,我们就可以创建不同的玩家和方块对象,然后在世界中进行移动和放置方块了。
```java
public static void main(String[] args) {
Player player1 = new Player("Alice", new Position(5, 5, 5));
Player player2 = new Player("Bob", new Position(6, 5, 5));
Block block1 = new Block("wood", "brown");
Block block2 = new Block("stone", "gray");
player1.move(Direction.NORTH);
player2.move(Direction.SOUTH);
player1.placeBlock(block1);
player2.placeBlock(block2);
Block blockAtPosition = World.getInstance().getBlock(new Position(5, 5, 4));
System.out.println("Block at position (5, 5, 4): " + blockAtPosition.getType());
}
```
输出结果如下:
```
Alice moved to (5, 5, 4)
Bob moved to (6, 5, 6)
Alice placed a wood block at (5, 5, 4)
Bob placed a stone block at (6, 5, 6)
Block at position (5, 5, 4): wood
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)