C++版iwanna2

10 篇文章 0 订阅

程序的流程图

Game.cpp
把有22行22列的二维字符数组strmap初始化为下面的图片
开始
把宏_CRT_SECURE_NO_WARNINGS定义为1
导入io流
导入cstring头文件
导入fstream文件
导入cstdio头文件
导入Player.h头文件
导入trigger.h头文件
释放std作用域下的所有东西
定义deadset函数
定义printstart函数
把窗口标题设为“I WANNA GO TO THE ''G''”

Game.cpp源文件
等待玩家按下任意一个键,按下后就清屏
清屏
break
清屏
break
break
break
break
否(break)
continue
否(清屏)
结束
把有22行22列的二维字符数组strmapr里的元素全都初始化为0
把二维字符数组strmap里的元素全都拷贝到二维字符数组strmap的里面去
创建一个Player对象p
定义字符ch为0
定义整型itrap为-1
定义整型ishoot为0
定义整型ibsv为0
创建一个fstream文件对象fs,用读模式的来打开s.txt这个文件
刷新fstream文件对象fs的文件内容
(!fs.is_open()) || fs.eof()?
释放fstream文件对象fs
把fs用写模式打开s.txt这个文件
往fstream文件对象fs输出“0 0 0 0”
释放fstream文件对象fs
把fs用读模式打开s.txt这个文件
把有3个元素的布尔数组barr里的元素全都初始化为0
把ibsv设为从fstream文件对象fs读取到的内容
设ch为0
ch < 3?
把布尔数组barr的第ch项设为ibsv按位与1按位向左移动ch的值的结果
ch自增1
把有22个元素的trigger对象数组分别初始化为trigger(20,3,20,3,0), trigger(16,5,16,6,1),trigger(19,12,20,12,2),trigger(17,13,17,13,3),trigger(17,15,17,16,3),trigger(14,14,14,15,3),trigger(13,16,13,17,3),trigger(15,18,15,19,3),trigger(11,20,11,21,4),trigger(0,16,9,16,6),trigger(8,11,9,13,7),trigger(4,5,7,9,8),trigger(9,6,9,8,9),trigger(3,1,3,3,10),trigger(11,1,11,1,11),trigger(11,3,11,3,12),trigger(13,1,14,1,13),trigger(13,7,15,8,14),trigger(15,11,17,11,15),trigger(16,12,17,12,16),trigger(21,13,21,13,17),trigger(11,8,11,8,18)
执行printstart函数
输出“\​n\​n\​n\​n\​n\​n\​​n\​t\​t\​t\​t\​t ”
输出“\​n \​033[31;1m********\​033[0m \​033[33m********\​033[0m \​033[32;1m********\​033[0m\​n”
输出“ \​033[31;1m* SAVE 1 *\​033[0m \​033[33m* SAVE 2 *\​033[0m \​033[32;1m* SAVE 3 *\​033[0m\​n”
输出“ \​033[31;1m********\​033[0m \​033[33m********\​033[0m \​033[32;1m********\​033[0m\​n\​n”
输出“游戏内:a左走 d右走 w二段跳,空中一段 z\​033[33m存档\​033[0m/射弹 r重开 \​033[31;1m“X”死\​033[0m “*”墙 \​033[31;1m“#”按钮\​033[0m,\​033[32;1m射就触发机关\​033[0m \​033[33m“S”存档\​033[0m \​033[32;1m“G”终点\​033[0m\​n开始界面:1~3选择要玩的存档 d删存档\​n\​n\​n”
把ch设为你输入的字符
把有2个元素的整型数组deadarr里的元素全都初始化为0
执行deadset函数,参数有整型数组deadarr的地址和fstream文件对象fs的引用
ch < '1' || ch > '3'?
清空缓冲区
(ch < '1' || ch > '3') && 'd' != ch?
输出“\​033[31;1m输入错误,请重新输入\​033[0m\​n\​n”
把ch设为你输入的字符
ch >= '1' && ch <= '3'
转到标签g
标签g
定义barri为ch自减1之后又自减字符“0”的ASCII码值的结果
如果trigger对象数组t的第0项的方法返回的值不为0,那么就定义字符指针cp为二维字符数组strmap的9行第20列的元素的地址,否则就定义字符指针cp为二维字符数组strmap的21行第0列的元素的地址
把解引用的cp设为字符“P”
往fstream对象fs输出ibsv加上字符“0”的ASCII码值的结果,并将结果以字符型输出
释放fstream文件对象fs
'G' == strmap[0][0]?
把有100个字符的字符串str初始化为“title I WANNA GO TO THE ''G'' : 似亡 * ”
把有100个字符的字符串stra初始化为空字符串
设字符串stra为整型数组deadarr的第barri项的元素转向字符串的结果
把字符串str连接上字符串str
执行系统命令,命令为字符串str
' ' == strmap[9][20]?
把二维字符数组strmap第9行第20列的元素设为字符“S”
' ' == strmap[11][21]?
把二维字符数组strmap第11行第21列的元素设为字符“S”
把Player对象p的方法sgetxy,参数有枚举XY的值X返回的引用设为字符指针cp与二维字符数组strmap第0行第0列的地址之间的元素个数除以22的结果
把Player对象p的方法sgetxy,参数有枚举XY的值Y返回的引用设为字符指针cp与二维字符数组strmap第0行第0列的地址之间的元素个数模上22的结果
执行Player对象p的方法printmap,参数有二维字符数组strmap
把ch设为你输入的字符
清空缓冲区
把解引用的cp设为空格
'a' == ch?
执行Player对象p的方法left_move,参数有字符指针cp的地址
定义整型i为0
i < 22?
执行trigger对象数组t的第i项的方法check,参数有Player对象p的方法sgetxy,参数有枚举XY的值X返回的引用,Player对象p的方法sgetxy,参数有枚举XY的值Y返回的引用,二维字符数组strmap的地址,二维字符数组strmapr的地址,Player对象p的引用,整型itrap的引用,字符指针cp的地址,字符ch,trigger对象数组t的地址和整型数组deadarr的第i项的元素的引用
i自增1
itrap > 0?
itrap自减1
!itrap?
把二维字符数组strmap的14行第5列的元素设为空格
把二维字符数组strmap第15行第5列的元素设为字符“X”
执行Player对象p的方法upOrDown,参数有字符指针cp的地址
执行Player对象p的方法shootmove,参数有二维字符数组strmap的地址,整型barri和整型ibsv的引用
执行Player对象p的方法rejump,参数有字符指针cp的地址
'X' == *cp?
执行Player对象p的方法gameover,参数有字符指针cp的地址,二维字符数组strmap的地址,二维字符数组strmapr的地址,对象trigger数组t的地址和整型数组deadarr的第i项的元素的引用
设布尔数组barr的第index项为0
ishoot > 0?
ishoot自减1
先清除s.txt这个文件的内容,再把fstream对象fs用写模式打开s.txt这个文件
往fstream对象fs输出ibsv加上字符“0”的ASCII码值的结果,并将结果以字符型输出
定义整型i为0
i < 3?
设字符串stra为整型数组deadarr的第barri项的元素转向字符串的结果
往fstream文件对象fs输出空格和字符串str
i自增1
释放fstream文件对象fs
把背景色设为黑色,前景色设为淡绿色
输出“恭喜你,你赢了,似了”,整型数组deadarr的第i项的元素和“次\​n”
释放fstream文件对象fs
'd' == ch?
执行Player对象p的方法right_move,参数有字符指针cp的地址
'w' == ch?
执行Player对象p的方法Djump,参数有字符指针cp的地址
'z' == ch?
执行Player对象p的方法shoot,参数有整型ishoot和字符指针cp的地址
'r' == ch?
执行Player对象p的方法reset,参数有字符指针cp的地址,二维字符数组strmap的地址,二维字符数组strmapr的地址,trigger对象数组t的地址和整型数组deadarr第i项的元素的引用
输出“\​033[31;1m请输入要删除的存档编号(输入错误就不删除存档)\​033[0m\​n\​n”
把ch设为你输入的字符
清空缓冲区
ch < '1' || ch > '3'?
输出“\​033[31;1m输入错误,不删除存档\​033[0m\​n\​n”
把ch设为你输入的字符
定义整型index为字符ch减去1再减去字符“0”的ASCII码值的结果
ibsv & (1 << index)?
把ibsv自减1按位左移index位的结果
释放fstream文件对象fs
先清除s.txt这个文件的内容,再把fstream对象fs用写模式打开s.txt这个文件
设整型数组deadarr的第index项为0
往fstream文件对象fs输出ibsv
定义整型i为0
i < 3?
往fstream文件对象fs输出空格和整型数组deadarr第i项的元素
输出“\​033[32m删除成功!\​033[0m\​n\​n”
刷新fstream文件对象fs
把ch设为你输入的字符
Game.cpp源文件里的printstart函数
结束
开始
输出“***** * * * *** * * * * *** *** *** ***** *** ***** * * ***** \​033[32;1m* * *** * *\​033[0m\​n”
输出“ * * * * * * ** * ** * * * * * * * * * * * * * \​033[32;1m * * * * *\​033[0m \​n”
输出“ * * * * ***** * * * * * * ***** * ** * * * * * * ***** ***** \​033[32;1m* ***\​033[0m \​n”
输出“ * * * * * * ** * ** * * * * * * * * * * * * * \​033[32;1m* *\​033[0m \​n”
输出“***** * * * * * * * * * * *** *** * *** * * * ***** \​033[32;1m***\​033[0m \​n”
Game.cpp源文件里的deadset函数
结束
开始
定义整型i为0
i < 3?
把解引用之后的整型数组指针deadarr的第i项设为从fstream文件对象fs中读取到的内容
刷新fstream文件对象fs
i自增1
Player.h头文件
结束
开始
防止头文件重复定义
导入io流
导入vector文件
导入trigger.h头文件
释放std作用域下的所有东西
定义宏JUMPHIGH为3
定义枚举XY,其中X为0,Y为1
定义结构体trir,有字符指针cp,有布尔值b,还有整型iy
定义类Player,并与类trigger作为友元,公开的有Player类的构造函数,printmap方法,Djump方法,left_move方法,left_move方法,right_move方法,sgetxy方法,upOrdown方法,gameover方法,reset方法,rejump方法,shoot方法和shootmove方法;私密的有整型ix,整型iy,整型ijh,整型ij,布尔值blr和里面的元素类型为结构体trir的vector容器v
Player.cpp源文件
结束
开始
导入io流
导入algorithm文件
导入cstring头文件
导入fstream文件
导入trigger.h头文件
导入Player.h头文件
导入Cmp.h头文件
释放std作用域下的所有东西
定义Player的构造函数
定义布尔型的MSB为假
定义布尔型的MSBa为假
定义布尔型的MSBb为假
定义布尔型的MSBc为假
定义布尔型的MSv为假
定义printmap方法
定义Djump方法
定义left_move方法
定义right_move方法
定义sgetxy方法
定义upOrDown方法
定义gameover方法
定义reset方法
定义rejump方法
定义shoot方法
定义shootmove方法
Player的构造函数
结束
开始
把ij设为2
把ijh设为0
把blr设为1
Player类里的printmap方法
结束
开始
定义整型i为0
定义整型ia为0
i < 22?
设ia为0
ia < 22?
前面输出“\​033[”,如果“G”为二维字符数组strmap第i行第ia列的元素,那么中间就输出“32;1m”,否则如果“X”为二维字符数组strmap第i行第ia列的元素,那么中间就输出“31;1m”,否则如果“#”为二维字符数组strmap第i行第ia列的元素,那么如果trigger类里的MSB不为0,那么中间就输出“32;1m”,否则中间就输出“31;1m”,如果“#”不为二维字符数组strmap第i行第ia列的元素,那么如果“S”为二维字符数组strmap第i行第ia列的元素,那么如果trigger类里的MSB为0,或者ia为21,那么中间就输出“33m”,否则中间就输出“33;1m”,如果“S”不为二维字符数组strmap第i行第ia列的元素,那么如果“@”为二维字符数组strmap第i行第ia列的元素,那么中间就输出“33m”,否则中间就输出“0m”,后面则输出二维字符数组strmap第i行第ia列的元素和“\​033[0m”
ia自增1
输出“|\​n”
i自0增1
输出“----------------------@\​n”
Player类里的Djump方法
break
break
break
否(break)
否(break)
否(break)
结束
开始
2 == ij?
21 == ix || '*' == (*cpp)[22] || '#' == (*cpp)[22]?
设ij为1
设ijh为宏JUMPHIGH的值
21 != ix && '*' != (*cpp)[22] && '#' != (*cpp)[22]?
设ij为0
设ijh为宏JUMPHIGH的值
1 == ij?
21 == ix || '*' == (*cpp)[22] || '#' == (*cpp)[22]?
设ij为2
21 != ix && '*' != (*cpp)[22] && '#' != (*cpp)[22]?
设ij为0
设ijh为宏JUMPHIGH的值
执行Player类里的rejump函数,参数有二级字符指针cpp
21 == ix || '*' == (*cpp)[22] || '#' == (*cpp)[22]?
设ij为1
设ijh为宏JUMPHIGH的值
21 != ix && '*' != (*cpp)[22] && '#' != (*cpp)[22]?
设ij为0
Player类里的left_move方法
结束
开始
iy && '*' != *(*cpp - 1) && '#' != *(*cpp - 1)?
把解引用的cpp向左移动一位
设blr为假
Player类里的right_move方法
结束
开始
21 != iy && '*' != *(*cpp + 1) && '#' != *(*cpp + 1)?
把解引用的cpp向右移动一位
设blr为真
Player类里的sgetxy方法
如果xymode不为0,那么就返回类Player里边的iy的引用,否则就返回类Player里边的ix的引用
结束
开始
Player类里的upOrdown方法
结束
开始
ijh > 0 && ix && '*' != (*cpp)[-22] && '#' != (*cpp)[-22]?
ijh自减1
把解引用的cpp向左移动22位
'*' != (*cpp)[22] && '#' != (*cpp)[22] && (!ix || '*' == (*cpp)[-22] || '#' == (*cpp)[-22])?
设ijh为0
把解引用的cpp向右移动22位
'*' != (*cpp)[22] && '#' != (*cpp)[22] && 21 != ix?
把解引用的cpp向右移动22位
Player类里的gameover方法
清屏
清屏
结束
开始
定义字符ch为0
' ' == (*strmap)[9][20]?
把解引用的二维字符数组指针strmap的第9行第20列的元素设为字符“S”
执行Player类里的printmap函数,参数有解引用的二维字符数组指针strmap
输出“\​033[31;1m游戏结束 请按r键重新开始\​033[0m\​n”
ch - 'r'?
把ch设为你输入的字符
清空缓冲区
ch - 'r'?
执行Player类里的printmap函数,参数有解引用的二维字符数组指针strmap
输出“\​033[31;1m游戏结束 请按r键重新开始\​033[0m\​n”
执行Player类里的reset函数,参数有二级字符指针cpp,二维字符数组指针strmap,二维字符数组指针strmapr,trigger对象数组t的地址tarr和整型引用idead
Player类里的reset方法
结束
开始
idead自增1
trigger::MSv?
把解引用的cpp设为解引用的二维字符数组指针strmap第9行第20列的元素的地址
设ix为9
设iy为20
trigger::MSv?
设trigger类里边的MSB为假
设MSBa为假
设MSBb为假
设MSBc为假
设blr为真
定义整型i为0
把解引用的二维字符数组指针strmapr里的元素全身是你都拷贝到解引用的二维字符数组指针strmap的里面去
i < 22?
把解引用的trigger对象数组指针tarr的第i项的成员变量MBt设为假
i自增1
清除vector容器v里的所有元素
执行Player里的rejump函数,参数有二级字符指针cpp
把解引用的cpp设为解引用的二维字符数组指针strmap第21行第0列的元素的地址
设ix为21
设iy为0
Player类里的rejump方法
结束
开始
21 == ix || '*' == (*cpp)[22]?
设ij为2
Player类里的shoot方法
结束
开始
(!i) && (21 != iy && blr || iy && (!blr))?
往vector容器的尾端添加一个结构体trir,里面有二级字符指针cpp,布尔型blr和整型iy
设i为3
Player类里的shootmove方法
结束
开始
定义里面的元素类型为结构体trir的vector容器的迭代器it为vector容器v的起始迭代器
v.end() != it?
' ' == *it->cp || '@' == *it->cp?
把解引用的迭代器it指向的字符指针cp设为空格
'#' == *it->cp?
把trigger类里边的MSB设为真
&((*strmap)[9][20]) == it->cp?
把trigger类里边的MSv设为真
!(ibsv & (1 << barri))?
把ibsv自增1按位左移barri位的结果
'*' == *it->cp || '#' == *it->cp || (!it->iy && (!it->b)) || (21 == it->iy && it->b)?
把迭代器it指向的it设为-1
0 <= it->iy?
把it指向的cp自减1减去it指向的b乘2的积的差
把it指向的iy自减1减去it指向的b乘2的积的差
' ' == *it->cp || '@' == *it->cp?
把解引用的it指向的cp设为字符“@”
把it向右移动一位
对vector容器v里的所有元素进行排序,排序方法为按这些元素的iy的值进行升序排序
(!v.empty()) && 0 > v.begin()->iy?
删除vector容器v的头端元素
trigger.h头文件
结束
开始
导入io流
导入Player.h头文件
释放std作用域下的所有东西
定义类trigger,并与类Player作为友元,私有的有整型MISX,整型MISY,整型MIEX,整型MIEY,整型Mtrig,布尔型MBt,静态布尔型MSB,静态布尔型MSBa,静态布尔型MSBb,静态布尔型MSBc和静态布尔型MSv;公开的有trigger类的有参构造函数,用来初始化私有的整型MISX,整型MISY,整型MIEX,整型MIEY和整型Mtrig,其中,布尔型MBt初始化为假,check方法和saveset方法
trigger.cpp源文件
结束
开始
导入io流
导入string文件
导入Player.h头文件
释放std作用域下的所有东西
定义布尔型的trigger类里的MSB为假
定义布尔型的trigger类里的MSBa为假
定义布尔型的trigger类里的MSBb为假
定义布尔型的trigger类里的MSBc为假
定义布尔型的trigger类里的MSv为假
定义check方法
定义saveset方法
trigger类里的check方法
break
否(break)
否(break)
break
break
否(break)
否(break)
否(break)
否(break)
break
否(break)
否(break)
否(break)
break
break
break
break
break
否(break)
否(break)
break
否(break)
break
break
否(break)
否(break)
结束
开始
定义整型i为0
MISX <= ix && ix <= MIEX && MISY <= iy && iy <= MIEY && (Mtrig - 4 && Mtrig - 8 && Mtrig - 16 && Mtrig - 18 ? (!MBt) : 1)?
设MBt为真
0 == Mtrig?
把解引用的strmap第21行第3列的元素设为字符“X”
执行Player对象引用p的方法gameover,参数有二级字符指针cpp,二维字符数组指针strmap,二维字符数组指针strmapr,trigger对象数组指针tarr和整型引用idead
1 == Mtrig?
设i为16
i < 21?
把解引用的strmap的第i行第6列的元素设为字符“X”
i自增1
2 == Mtrig?
设i为18
i < 22?
'X' == (*strmap)[i][13]?
把解引用的strmap的第i行第13列的元素设为空格
i自增1
把解引用的strmap的第i行第13列的元素设为字符“X”
3 == Mtrig?
设i为MISX
i <= MIEX?
定义ia为MISY
ia <= MISY?
把解引用的strmap的第i行第13列的元素设为字符“X”
ia自增1
i自增1
执行Player对象引用p的方法gameover,参数有二级字符指针cpp,二维字符数组指针strmap,二维字符数组指针strmapr,trigger对象数组指针tarr和整型引用idead
4 == Mtrig?
'z' == ch?
把解引用的strmap的第13行第19列的元素设为字符“L”
把解引用的strmap的第13行第20列的元素设为字符“O”
把解引用的strmap的第13行第21列的元素设为字符“L”
执行Player对象引用p的方法gameover,参数有二级字符指针cpp,二维字符数组指针strmap,二维字符数组指针strmapr,trigger对象数组指针tarr和整型引用idead
6 == Mtrig?
!MSB?
设i为0
i < 10?
把解引用的strmap的第i行第15列的元素设为字符“X”
i自增1
7 == Mtrig?
设i为8
i < 10?
把解引用的strmap的第i行第10列的元素设为字符“*”
把解引用的strmap的第i行第14列的元素设为字符“*”
i自增1
i < 15?
8 == Mtrig?
i自增1
(!MSBa) && '*' == (*cpp)[22]?
9 == Mtrig?
设MSBa为真
设i为6
i < 9?
把解引用的strmap的第10行第i列的元素设为字符“*”
i自增1
10 == Mtrig?
设i为1
i < 4?
把解引用的strmap的第4行第i列的元素设为字符“*”
i自增1
11 == Mtrig?
把string字符串str初始化成“LOL LOL”
定义字符指针cpa为解引用的strmap的第11行第2列的元素地址
定义字符指针cpb为string字符串第0项的地址
设i为0
i < 7?
把解引用的cpa设为解引用的cpb
i自增1
把cpa向右移动一位
把cpb向右移动一位
设MSBb为真
12 == Mtrig?
把解引用的strmap的第11行第0列的元素设为字符“G”
把解引用的strmap的第14行第0列的元素设为空格
13 == Mtrig?
把解引用的strmap的第11行第0列的元素设为字符“G”
把解引用的strmap的第13行第0列的元素设为空格
把解引用的strmap的第13行第5列的元素设为字符“X”
把解引用的strmap的第13行第2列的元素设为空格
把解引用的strmap的第15行第5列的元素设为字符“*”
设i为16
i < 21?
把解引用的strmap的第i行第0列的元素设为字符“L”
把解引用的strmap的第i行第1列的元素设为字符“O”
把解引用的strmap的第i行第2列的元素设为字符“L”
i自增1
14 == Mtrig?
设ii为10
15 == Mtrig?
设MSBc为真
设i为10
i < 13?
把解引用的strmap的第14行第i列的元素设为字符“X”
i自增1
把解引用的strmap的第13行第100列的元素设为字符“*”
设i为0
i < 11?
把解引用的strmap的第10行第i列的元素设为字符“*”
i自增1
*cpp == &((*strmap)[14][12])?
执行Player对象引用p的方法gameover,参数有二级字符指针cpp,二维字符数组指针strmap,二维字符数组指针strmapr,trigger对象数组指针tarr和整型引用idead
'*' == (*cpp)[22]?
16 == Mtrig?
MSBc?
把解引用的strmap的第14行第10列的元素设为空格
把解引用的strmap的第14行第11列的元素设为空格
把解引用的解引用的cpp加上22的结果设为字符“X”
17 == Mtrig?
把解引用的strmap的第21行第13列的元素设为字符“X”
18 == Mtrig?
MSBb?
把解引用的cpp设为解引用的strmap的第11行第7列的元素地址
把解引用的strmap的第11行第8列的元素设为字符“*”
设MSBb为假
rigger类里的saveset方法
结束
开始
设MSv为b
Cmp.h头文件
结束
开始
防止头文件重复定义
导入vector文件
导入Player.h头文件
释放std作用域下的所有东西
定义函数对象cmp,公开的有重载运算符()
Cmp.cpp源文件
结束
开始
导入vector文件
导入Cmp.h头文件
导入Player.h头文件
释放std作用域下的所有东西
定义重载运算符()
重载运算符()
返回结构体t的成员变量iy小于结构体ta的成员变量iy的布尔值
结束
开始

程序游玩的效果

iwanna

下一篇博客要说的东西

C++打小怪游戏

C++版iwanna1

好的,下面是一个简单的iwanna游戏代码,主要用到了Python的turtle模块: ```python import turtle # 设置游戏窗口 window = turtle.Screen() window.title("I wanna game") window.bgcolor("white") window.setup(width=600, height=600) # 创建玩家 player = turtle.Turtle() player.shape("turtle") player.color("blue") player.penup() player.speed(0) # 移动玩家 def move_up(): y = player.ycor() player.sety(y + 20) def move_down(): y = player.ycor() player.sety(y - 20) def move_left(): x = player.xcor() player.setx(x - 20) def move_right(): x = player.xcor() player.setx(x + 20) # 设置键盘响应事件 turtle.listen() turtle.onkey(move_up, "Up") turtle.onkey(move_down, "Down") turtle.onkey(move_left, "Left") turtle.onkey(move_right, "Right") # 创建目标 goal = turtle.Turtle() goal.shape("circle") goal.color("red") goal.penup() goal.speed(0) goal.goto(0, 100) # 设置计分板 score = 0 pen = turtle.Turtle() pen.color("black") pen.penup() pen.hideturtle() pen.goto(0, 260) pen.write("Score: {}".format(score), align="center", font=("Courier", 24, "normal")) # 判断碰撞 def is_collision(t1, t2): distance = t1.distance(t2) if distance < 20: return True else: return False # 设置主循环 while True: window.update() # 判断是否碰撞 if is_collision(player, goal): goal.setposition(0, 100) score += 10 pen.clear() pen.write("Score: {}".format(score), align="center", font=("Courier", 24, "normal")) # 移动目标 y = goal.ycor() y -= 0.2 goal.sety(y) # 判断是否超出边界 if goal.ycor() < -300: goal.setposition(0, 300) # 结束游戏 turtle.done() ``` 运行代码后,您将看到一个小海龟作为玩家,用箭头键控制移动,目标是吃到红色的圆圈。每吃到一个目标,得分增加10分,计分板会实时更新。如果目标超出边界,它将回到窗口的顶部。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值