プログラミングの面白さ-8逃げバグと2進数-
2025.09.25
IT・情報処理
ゲームには時折、『バグ』が発生します。
この『バグ』は時として・・・
プレイヤーにとって歓喜の「裏ワザ」として繰り出される武器となります✨
私が小さい頃、ゲームをする中で見つけた「裏ワザ」は、友達同士で情報交換したものでした😊
実は昔のゲームには、バグから生まれた裏ワザがあったりします🤓
例えばファミコン版『ドラクエIV』で有名な2つのバグ🎮
今回は私も遊んでいた『ドラクエIV』から!
プログラミングの面白さが詰まった有名な2つのバグのうちの1つ
『通称「8逃げバグ」』についてお話しします。
8回「にげる」と何が起こるか?

ファミコン版『ドラクエIV』では、、、
「にげる」が8回失敗すると、その後の攻撃がすべて“会心の一撃”になる
という、、、
「♪ワタシはサイキョー!」な現象が起きるのです🤩!!!!
本来、「にげる」は4回目で確実に成功します✨
しかし!!!
ボスのように絶対に逃げられない相手だと、、、
なかなか逃げることができません!
そのため「にげる」のカウントはどんどん増えていきます。
このカウントが、8回になった瞬間にバグが起きるのです!!!
l なぜ会心の一撃が出るのか?
-2進数で仕組みを解剖-
このバグの正体!
それは、ゲームのプログラムがデータを管理する方法にあります👆
コンピュータの中では、全ての情報は0と1の並び(2進数)で記録されています。
これは“電気のスイッチが「オン(1)」か「オフ(0)」か」”みたいなものとイメージすればいいかもしれません。
そして、戦闘中のプログラムに2つの「データを入れる箱」があると考えてください。
1. 「にげる」カウンター: 戦闘中に「にげる」を選んだ回数を記録している箱です。
2. 会心の一撃フラグ: 「今、会心の一撃モードか?」を記録する箱です。
これが「オン」になると、“会心の一撃”を連発します!!!
本来、この二つの箱は別々の場所にあるべきなのですが💦
機能的な制限のために、この箱たちが隣同士の場所を使っていたためこんな現象が起きました!
l カウントと2進数の関係
「にげる」カウンターの値を2進数で見てみましょう。

にげる1回: 0001
にげる2回: 0010
にげる3回: 0011
にげる4回: 0100
にげる5回: 0101
にげる6回: 0110
にげる7回: 0111
にげる8回: 1000
この「にげる」カウンターの値が、
隣接する会心の一撃フラグに書き込まれてしまう
のがこのバグの核心です!

「会心の一撃フラグ」が「1」になる
↓↓
「会心の一撃モード」
と判定されるプログラムが組まれています💻
しかし・・・
「にげる」カウンターが8回目になる
↓↓
その値が2進数で「1000」に!
↓↓
会心の一撃フラグに「1」が書き込まれる!
↓↓
勇者たちは「よし、会心の一撃を出すぞ!」と動いてしまう!!!
という流れです👆
このバグは、
プログラムが持つ「メモリの想定外の上書き」という現象です👆
バグが起きることで、裏ワザが発動する!
プログラミングの面白さつながる良い例ではないかと思っています✨
コンピュータの裏側では、、、
実はこんな風にいろいろな数字が動いているのです!
そんなことを知ると、、、
コンピュータやゲームも見え方が変わってくるかもしれませんね😯
✅自分でゲームを作ってみたい
✅プログラミングに興味がある
✅ITの仕組みを知りたい
など!
少しでも「IT・AI・情報処理」に興味を持ったらオープンキャンパスに行ってみよう🏫

~オープンキャンパスへのお申し込み方法~
【LINEでのお申し込みがオススメ!】
トーク画面に【オープンキャンパス申し込み】と送るだけ!
※機能上すぐ既読がつきますが、内容を確認しだい返信させて頂きます!
\今年度より交通費補助が拡大/
長岡市内からの参加でも【1,000円】の補助!
オープンキャンパスに参加する皆さんの交通を補助し、進路活動をサポートします!
■エリアと金額について

日々の学生の様子はSNSをcheck!
NJCのInstagram、TikTok、X、noteなどを見てみよう🌈
学校のことがよく分かる!パンフレット・募集要項の希望はこちら!