[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[WitchTech 00533] -= 演算子の数式展開はバグ?解決篇
- Subject: [WitchTech 00533] -= 演算子の数式展開はバグ?解決篇
- From: a_hirata@siscom.or.jp (平田 敦)
- Date: Sun, 12 Nov 2000 22:16:17 +0900
以下のように、御指摘に従い、すべてSTATICな変数として宣言したところ、
ロジック部分を変更せずに、正常に結果を出力し終了しました。
気持ち的には?な部分が多いのですが、このハード(いや、LSICか?)は、
こう言うこともある、という結論を自分なりに出しました。
と、いうことで、正常に動作したソースを掲載します。ゴミソースでしつれ
いします・・・。
/* WonderWitch用に修正 */
#include <stdio.h>
#include <sys/bios.h>
int key_scan()
{
switch (key_hit_check()){
case KEY_START:
text_put_string(10,10,"STARTキーがおされたにゃん");
text_put_string(10,11,"しばらくで終了するにゃん");
sys_wait(100);
bios_exit();
break;
case KEY_A:
text_put_string(10,10,"Aキーが押されたにゃん");
text_put_string(10,11,"ちょこっとウエイトっす
");
sys_wait(50);
break;
case KEY_B:
text_put_string(10,10,"Bキーがおされたにゃん");
text_put_string(10,11,"もいっかいBが押される
までまつっす");
/* while(key_hit_check() <> KEY_B); */
break;
case KEY_X1:
text_put_string(10,10,"X1キーがおされたにゃん");
break;
case KEY_X2:
text_put_string(10,10,"X2キーがおされたにゃん");
break;
case KEY_X3:
text_put_string(10,10,"X3キーがおされたにゃん");
break;
case KEY_X4:
text_put_string(10,10,"X4キーがおされたにゃん");
break;
case KEY_Y1:
text_put_string(10,10,"Y1キーがおされたにゃん");
break;
case KEY_Y2:
text_put_string(10,10,"Y2キーがおされたにゃん");
break;
case KEY_Y3:
text_put_string(10,10,"Y3キーがおされたにゃん");
break;
case KEY_Y4:
text_put_string(10,10,"Y4キーがおされたにゃん");
break;
/* case KEY_SOUND:
text_put_string(10,10,"SOUNDキーがおされたにゃん");
break;
*/
default:
break;
}
}
void main()
{
static int capa[] = {88, 49, 18};
static int water[3], i, j, n1, n2, tmp;
static char buff[256];
text_screen_init();
/* 2回繰り返す */
for (i = 1; i <= 2; i++)
{
n1 = 0; n2 = i;
water[0] = 88; water[1] = 0; water[2] = 0;
/* 終了条件まで無限ループ */
for (j = 0;;j++)
{
/* */
key_scan();
/* */
/* 画面表示 */
/* printf("%2d:(%2d, %2d, %2d)\n", j,
water[0], water[1], water[2]); */
sprintf(buff,"%2d:(%2d, %2d, %2d)\n", j,
water[0], water[1], water[2]);
text_put_string(0, j%10, buff);
sys_wait(20);
if (water[n1] > capa[n2] - water[n2])
{
/* 注ぎ先がいっぱいになる */
/* water[n1] -= capa[n2] - water[n2];
*/
water[n1] = water[n1] - capa[n2] +
water[n2];
water[n2] = capa[n2];
if (water[n1] < 0)
{
text_put_string(10,10,"water[
n1] < 0 !!!");
sys_wait(100);
bios_exit();
break;
}
/* 次の一手 */
tmp = 3 - n1 - n2;
n1 = n2;
n2 = tmp;
}
else
{
/* 注ぎ側が空っぽになる */
water[n2] += water[n1];
water[n1] = 0;
/* 終了条件 */
if (water[2] == 9)
break;
/* 次の一手 */
tmp = 3 - n1 - n2;
n2 = n1;
n1 = tmp;
}
}
/* printf("%2d:(79, 0, 9)\n", ++j); */
sprintf(buff,"%2d:(79, 0, 9)\n", ++j);
text_put_string(0, 1, buff);
}
}
//*******************************
// 平田 敦
// a_hirata@siscom.or.jp
//*******************************
ML Archives