左または右キーを一つだけ受け入れるならif文を一つ作ってキー入力を待つ関数を入れればよいことはわかりました。if文を複数用意すると、画像が区間移動しなくなり、一切動かなくなってしまいました。関数や構造体を試し、お手本を見ながらやったのですが結局だめでした。コードは背景とキャラクタを表示させます。キャラクタを左右キーで動かすためのコードを作りました。したらよいのでしょうかご指摘よろしくお願いします。6年前インデントがアバウトなので非常にソースコードが読みづらいです。0;}気になる所は、ProcessMessage()が2つ有ることです。while中のProcessMessageだけで問題ないので、まず2つ目のを抹消しましましょう。それと歩かないことと、関数化や構造体、if文を複数用意することは直接は関係ないです(バグを誘発する可能性はあります)。このプログラムの場合、プログラムの流れの中で問題を引き起こしているので、DrawFotmatString()で変数を確認してみましょう。コメントで確認ポイントと書いた所でch.xの値を表示させてみれば分かります。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。処理1();}は同じことですよ。32単位で動かしているのにキャラの初期位置が32の倍数じゃないのが気になります。返信ありがとうございます。指摘されたように、確認ポイントのch.xの値をDrawFotmatString関数で確認したところ、if文は処理が一度で終了していて、DrawGraph関数のポイントでも同じ現象が。ch.x-2;上のch.x%32!=0の置き方が悪いのは少しわかりました。コードがお互いに相殺しあってしまっているのか、ほかにまだ要因があるのかよくわかりません。6年前デバッガなどでプログラムの流れを追ってみると、わかりやすくなると思います。補足といっては何ですがprintfデバッグ系列をする場合は値などを変更した跡に特定の文字+現在の値で出すとわかりやすくなります。printfデバッグ系列というのは、文字列を描画させて行うデバッグ全般のことです。ほかの方はなんといっているか知りませんが私はこう呼んでいます。C言語を使うと自分の足を誤って撃ち抜いてしまうことがある。C++を使えばそのような間違いを犯しにくくなる。やってしまったときには足全体が無くなる。返信遅くなり、申し訳ないです。初めの時のプログラムだと、ch.x%32の処理が右キー、左キーの入力を待たずに処理されていたみたいです。そこでmain関数内に構造体のほかにright、left変数を新たに作ることで右キー左キーが押された時のch.x%32の処理を分けることができるようにしたところ、無事問題が解決しました。中で呼んでいる関数は共通してエラーが起きると0以外を返します。0;}DrawFotmatString()関数によって視覚的にプログラムの問題点を見つけられたのがとても大きかったです。さん、みけCATさん、KORYUOHさん。的確な返信有難うございました。わからないことがありましたらここで質問させて頂きます。ミクプラは自由にリンクできます。