class02_qt贪吃蛇

项目源码地址:class02_Qt贪吃蛇: 计算机软件实习项目2 (gitee.com)

一、需求分析

玩家可以控制贪吃蛇在屏幕上移动,屏幕上会随机出现“食物”,贪吃蛇碰到食物自身长度加一,得分加一,当蛇碰到墙壁或自身,游戏结束

二、界面设计

两个界面:开始界面(用于选择关卡难度)、主游戏界面

开始界面

通过下拉选项框进行难度的选择

点击开始游戏后,窗口将下拉列表的序号返回一个值,这个值我们用游戏窗口接收,并用它表示难度,即速度

主游戏界面

具体界面生成实现在代码中

三、算法设计

由于涉及按钮点击,界面绘制,所以选择重写事件函数来进行游戏。

先来了解一下qt事件机制,事件机制是Qt最难以理解且最为精妙的一部分。事件主要分为两种:

在与用户交互时发生。比如按下鼠标(mousePressEvent),敲击键盘(keyPressEvent)等。

系统自动发生,比如计时器事件(timerEvent)等。

在发生事件时(比如说上面说的按下鼠标),就会产生一个QEvent对象(这里是QMouseEvent,为QEvent的子类),这个QEvent对象会传给当前组件的event函数。如果当前组件没有安装事件过滤器(这个下文会提到),则会被event函数发放到相应的xxxEvent函数中(这里是mousePressEvent函数)。

在这个游戏中我们需要重写绘制事件,定时事件,按键事件

void paintEvent(QPaintEvent *event);

void timerEvent(QTimerEvent *event);

void keyPressEvent(QKeyEvent *event);

绘制事件:负责绘制食物和蛇,使用QPainter类来进行页面的绘画,QPainter也只能在绘制事件中使用,QPainter类方法主要有drawArc()画弧,drawChord()画弦,drawEllipse()画椭圆,drawLine()

定时事件:实现移动和判断游戏结束。开始定时事件使用startTimer()函数,参数为多久调用一次。为了实现蛇的移动,在定时事件中调用update()即再次进行绘制事件,更新界面

按键事件:实现按键的点击,每进行一次点击QEvent类会接收一个key,通过key()方法判断该按键,进行坐标增减

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值