求助123
gamemaker吧
全部回复
仅看楼主
level 5
高压氧 楼主
我想完成一个使用for,if,数组显示9月所有周日的程序作为新手作业,最后输出格式为“day1:2024.9.1”。然而很明显这错误百出,请dashen修改,或者告诉我一下正常的思路[泪]
2024年08月31日 15点08分 1
level 5
首先请你自己先看看你写的啥:
问题描述奇怪 (你运行后发生啥了,是想写通用一点还是仅九月?(我按你仅九月算))
var day[j]; 真的能正常不报错吗(把自带那个纠错开开)(数组最后也没用上啊)
string 里为啥是个大写的 i (gml大小写敏感)
逻辑更奇怪:
九月里有零日?( i 从零开始)
九月第三十天不算天? (5行的if起码得是 i<=30 吧)
我的想法是(仅二零二四年九月):
开一个记录数量的变量cnt从1开始;
设变量day为1每次循环加7(因为今年9月第一天是周日)
{
如果天数大于30直接跳出循环;
输出"day"+string(cnt)+":2024.9."+string(day);
cnt自增一;
}
应该差不多,你自己翻译成gml吧,存的话就在循环用数组把 day 存起来就好了
2024年09月01日 16点09分 2
吧务
level 13
首先,这是作业,所以不会给你答案来抄,只能尝试把你引导到答案上。
其次……问题有点多,只能尽力而为。
0、想做程序,逻辑严谨是必要的,不只是编写代码,提问也是其中一部分。
1、如果这段代码是自己写的,且在尝试写缩进,那么请注意行7和行11应该增加缩进量。
2、行7的大写I,意义不明。
3、行2定义了day[j]数组,但并未使用。
4、行3进行了i循环(0到365),通常认为是循环1年(平年)范围的每一天,但2024是闰年。
5、行5进行了i与30的对比,似乎又是用i表示九月的第i天,题主需要重新规划一下变量定义,不要乱用。
6、行7似乎是在尝试合成日期的点分割格式,但月和日之间的点并没有表现出来,而且选择了直接show,并没有保存
7、14-17行的循环,此时并不涉及i变量的值变化,和题主自己提到的格式相比,也并未写到冒号的加入。
2024年09月02日 03点09分 3
[真棒]
2024年09月08日 08点09分
level 5
高压氧 楼主
回来了,修复了,倒不如说是重写了。
还是显示9月中所有的周日
我不知道怎么顺序显示,见谅。[鄙视]
体会:showmessage是不是有显示长度限制,启动吞了我字符串。听说draw text更实用,求教
有没有办法就不用那么多+号拼凑出我想要的信息
有无提高打字速度的习惯,就是说各种切换符号大大降低速度
没有图片:显示日期。但却是显示了
2024年09月08日 07点09分 4
是,用draw_text直接上英文字符串吧,gm原生不支持中文
2024年09月08日 08点09分
level 5
高压氧 楼主
接下来,我对命题进行一个加强,显示一年中所有周日
为方便,我就计一月一日为第一个周日
我的想法是在特定的月份,i累加的次数特定,虽然说用switch语句会更快但还是用了if套if
然后结果如下:
2024年09月08日 07点09分 5
level 5
高压氧 楼主
可以看出的问题:
一开始相对正常,除了从一月二日开始,莫名其妙多了个14,都还好
到后面就开始抽风了,i自减一个月份的天数到后面不执行了,且出现大幅度的跳跃,一次不只+7
j月份数也是,直接突破了12个月,i直接加到365才停止
请求:
这个i,j是否可以用gm的二维数组更加便捷地表示
求一系列bug的修复,我没辙了[惊哭]
这个不是我的作业,这个是我额外的拓展,标答这下可以给我了吧[黑线]
但我有几个感觉,把k赋值给i那里会导致i到365,可我没有更好的表示方法了
2024年09月08日 08点09分 6
吧主呢?救一下啊[泪]
2024年09月08日 08点09分
事实上我不会用二维数组,如果可以的话求教了
2024年09月08日 08点09分
所以,咱说的那句“题主需要重新规划一下变量定义,不要乱用。”不知道是没听进去还是怎么样……至少到目前为止并没有解释i、j、k分别起什么作用。
2024年09月09日 03点09分
然后是截图,请保证截图里包含有效信息(如代码截图要除代码本身外还要包含行号、事件信息等),外边的空白能裁掉都裁掉。
2024年09月09日 03点09分
level 5
看着有点眼晕,下次把图截小点
首先还没看逻辑,先挑点语法毛病
0.判断等于时请使用 == 而不是 = 可能会造成混淆
1. || 是逻辑或 是指多个条件当至少有一个满足时返回真 而不是判断等于的连续 在图中的运用会导致始终为真 格式应为 (x==1||x==2||x==3) 之类的(除非是我孤陋寡闻,没学过这个格式)
2.需要考虑月份增加后下边的 if 语句仍然会继续执行 试思考月份为1时在10行 if 包含的语句使月份为2 则26行 if 是否会运行 若你思考到了问题的答案试查询 if else 格式
最后把 ; 加上是好习惯
2024年09月08日 12点09分 7
for循环内的第一栏为刚进入循环的初始化,4行你已将k初始化为1,而5行的写法意味k自增1,自然从二开始,发问前先仔细看看呀
2024年09月08日 12点09分
声明临时的数组只需要声明数组名,如 var shuzu;shuzu[0]=1;
2024年09月08日 12点09分
i在循环的一开始无论如何都会回到k 因此在15.23.31行的i自减毫无意义
2024年09月08日 12点09分
从第1天开始 第365天后结束 5行 < 改为 <=
2024年09月08日 12点09分
1