turtle模块编程实现一个小游戏

编程入门 行业动态 更新时间:2024-10-21 17:47:00

turtle模块编程实现一个<a href=https://www.elefans.com/category/jswz/34/1769974.html style=小游戏"/>

turtle模块编程实现一个小游戏

相关C++知识点有类和基础的概念和成员函数,派生类函数的引用的初始化,难点在于析构函数的过程理解,STACK声明体内析构函数做过注释的部分。测试库仍依赖马光志老师手搓,需要函数库的小伙伴私信。

关于栈和队列数据结构的讲解:

吃星星的小芒果:用栈算法递归解决汉诺塔问题​zhuanlan.zhihu

1. 需求分析:

整型栈是一种先进先出的存储结构,对其进行的操作通常包括:向栈顶压入一个整型元素、从栈顶弹出一个整型元素等。整型栈类STACK采用之前定义的两个QUEUE类模拟一个栈,其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有如下函数采用C++语言编程, 然后写一个main函数对栈的所有操作函数进行测试,请不要自己添加定义任何新的函数成员和数据成员。

class 

编程时应采用VS2019开发,并将其编译模式设置为X86模式,其他需要注意的事项说明如下:

(1)在用STACK(int m)对栈初始化时, 为其基类和成员q的elems分配m个整型元素内存,并初始化基类和成员q的max为m,以及初始化对应的head=tail=0。

(2)对于STACK(const STACK& s)深拷贝构造函数,在用已经存在的对象s深拷贝构造新对象时,新对象不能共用s的基类和成员q为elems分配的内存,新对象要为其基类和成员q的elems分配和s为其基类和成员q的elems分配的同样大小的内存,并且将s相应的elems的内容深拷贝至新对象为对应elems分配的内存;新对象应设置其基类和成员q的max、head、tail和s的对应值相同。

(3)对于STACK(STACK&& s)noexcept移动拷贝构造函数,在用已经存在的对象s移动构造新对象时,新对象接受使用s为其基类和成员q的对应elems分配的内存,并且新对象的max、head、tail应和s的基类和成员q的对应值相同;s的基类和成员q的elems设置为空指针以表示内存被移走,同时其对应的max、head、tail均应置为0。

(4)对于STACK& operator=(const STACK& s)深拷贝赋值函数,在用等号右边的对象s深拷贝赋值等号左边的对象s时,等号左边对象的基类和成员q不能共用s的基类和成员q为elems分配的内存,若等号左边的对象为其基类和成员q的elems分配了内存,则应先释放掉以避免内存泄漏,然后为其elems分配和s为其基类和成员q的elems分配的同样大小的内存,并且将s对应两个elems的内容拷贝至等号左边对象对应两个elems的内存;等号左边对象中的max、head、tail应设置成和s中基类和成员q的对应值相同。

(5)对于STACK& operator=(STACK&& s)noexcept移动赋值,在用等号右边的对象s移动赋值给等号左边的对象时,等号左边的对象如果已经为其基类和成员q中的elems分配了内存,则应先释放以避免内存泄漏,然后接受使用s的基类和成员q为elems分配的内存,并且等号左边对象中的max、head、tail应和s中基类和成员q中的对应值相同;s中基类和成员q的elems设置为空指针以表示内存被移走,同时其对应的max、head、tail均应设置为0。

(6)打印栈时从栈底打印到栈顶。

//

更多推荐

turtle模块编程实现一个小游戏

本文发布于:2024-02-16 20:07:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1691330.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小游戏   模块   turtle

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!