一个经典小程序

下面一个非常经典的例子学习继承类之间的调用关系

#include <iostream>
using namespace std;
class base {
public:
    base(){
        cout << "base()";
    }
    virtual ~base() {
        cout << "~base";
    }
};
class subs:public base{
public:
    subs() {
        cout << "subs()";
    }
    ~subs() {
        cout << "~subs()";
    }
};

int main() {
    base *b= new subs;
    delete b;
    return 0;
}

会输出base()subs()~subs()~base

1. 被继承的基类的析构函数一定是虚函数

2. 构造函数、析构函数都会被调用

下面的程也会输出同样的结果,这个就不知道为什么了

#include <iostream>
using namespace std;
class base {
public:
    base(){
        cout << "base()";
    }
    ~base() {
        cout << "~base";
    }
};
class subs:public base{
public:
    subs() {
        cout << "subs()";
    }
    ~subs() {
        cout << "~subs()";
    }
};

int main() {
    subs b;
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,我可以提供一些代码示例来帮助你写一个 Java 贪吃蛇小程序。 首先,你需要创建一个面向对象的类,用来描述蛇的各个部分。比如: ``` class SnakePart { int x, y; public SnakePart(int x, int y) { this.x = x; this.y = y; } } ``` 然后,你需要创建一个 Snake 类,用来维护蛇的位置和状态: ``` import java.util.LinkedList; class Snake { LinkedList<SnakePart> snakeParts = new LinkedList<>(); int direction; public Snake(int x, int y) { snakeParts.add(new SnakePart(x, y)); direction = 0; } public void move() { SnakePart head = snakeParts.getFirst(); int x = head.x; int y = head.y; switch (direction) { case 0: y--; break; case 1: x++; break; case 2: y++; break; case 3: x--; break; } snakeParts.addFirst(new SnakePart(x, y)); snakeParts.removeLast(); } } ``` 最后,你可以创建一个 GUI 程序,用来呈现贪吃蛇游戏: ``` import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class SnakeGame extends JPanel implements ActionListener { private Snake snake; private Timer timer; private Point fruit; public SnakeGame() { setBackground(Color.WHITE); setFocusable(true); snake = new Snake(40, 40); timer = new Timer(50, this); timer.start(); addFruit(); } @Override public void actionPerformed(ActionEvent e) { snake.move(); if (snake ### 回答2: 贪吃蛇是一款经典的游戏,在Java中开发一个贪吃蛇小程序可以通过以下的步骤实现: 1. 创建游戏窗口:使用Java Swing或JavaFX框架创建一个游戏窗口,设置窗口的标题、大小和关闭方式。 2. 绘制游戏画面:使用Java的图形库绘制游戏界面,包括背景、蛇身和食物等元素。可以使用二维数组或集合来表示游戏地图,每个格子可以是空白、蛇身或食物。 3. 实现蛇的移动:定义一个蛇类,包括蛇的初始长度、位置和移动方向等属性,通过监听键盘事件来改变蛇的移动方向。在每一次游戏循环中更新蛇的位置,包括蛇身的增加和移除。 4. 确定食物位置:在每一次游戏循环中判断蛇是否吃到食物,如果蛇头位置与食物位置重合,则蛇的长度增加,并重新生成食物的位置。 5. 判断游戏结束:在每一次游戏循环中判断蛇是否碰到边界或自身,如果是则游戏结束,弹出游戏结束提示框。 6. 计分和游戏速度调整:在游戏的界面上显示当前得分,并根据得分的增加调整游戏的速度。 通过以上步骤,可以初步实现一个简单的贪吃蛇小程序。为了提升游戏体验,还可以添加音效、障碍物、不同难度级别等功能来丰富游戏。 ### 回答3: 贪吃蛇是一种经典的游戏,现在我来用Java编写一个简单的贪吃蛇小程序。 首先,我们需要创建一个贪吃蛇的游戏窗口。可以使用Java的Swing库来创建一个窗口,并设置窗口的大小和标题。 然后,我们需要创建一个表示贪吃蛇的类。这个类包含贪吃蛇的身体坐标,方向以及移动的方法。 接下来,我们需要创建一个表示食物的类。这个类包含食物的坐标和随机生成的方法。 在主程序中,我们可以通过键盘监听来控制贪吃蛇的移动方向。根据用户的按键事件,我们可以改变贪吃蛇的方向。 在游戏的主循环中,我们可以不断更新贪吃蛇的位置,并判断是否吃到了食物。如果贪吃蛇吃到了食物,我们可以根据一定的规则来增加贪吃蛇的身体长度。 另外,我们还需要判断贪吃蛇是否碰到了自己的身体或者窗口的边缘。如果碰到了身体或者边缘,游戏结束。 最后,我们可以在窗口中绘制贪吃蛇和食物的位置,以及显示当前得分和游戏状态。 总的来说,编写一个贪吃蛇小程序涉及到创建游戏窗口、贪吃蛇类、食物类,并实现用户操作、游戏逻辑和画图等功能。这只是一个简单的贪吃蛇小程序,还有很多细节和功能可以进一步完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

andeyeluguo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值