2011-01-07 54 views
0

こんにちは皆さん 本当にx-oやtic tacのソースコードが808186の にある必要があります。どのようにすれば私のようなものを見つけることができますか?x-oプログラムをアセンブルしますか?

+0

これは宿題ですか?もしそうなら宿題タグを追加してください。 –

答えて

1
+0

plz私は80186と一緒に働く別のリンクを教えてください? – Henry

+0

うーん、Googleはあなたの友人です;)それを変換してみませんか?それはやりすぎるべきではありません。 – Blender

+0

これらのリンクから変換するものは何ですか? 80186はうまく動作します。プログラミングが進んでいる限り、8086から80186までの唯一の実際の違いは、80186がENTER、LEAVE、およびPUSHを追加したことだけです。 –

0

ボードには9枚のタイルがあります。各タイルには3つの状態(空、円、十字)のいずれかがあります。これらの各状態に数値を与え、それらを使ってボード全体の状態を計算します(例: "board = tile [0] [0] | tile [0] [1] * 3 | tile [0] [2] * 3 * 3 | tile [1] [0] * 3 * 3 * 3 | ... ")。これにより、ゲームの現在の状態を表す0〜19683の数値が与えられます。

ルックアップテーブルのインデックスとして、「ゲームの現在の状態」整数を使用します。ルックアップテーブルの各エントリは、ゲームの新しい状態を表します。これは約38.45キロバイトを要します。 「最後のプレイヤーが勝った」ことを表すために、各エントリの最も高い(16番目の)ビットを使用してください。誰かが勝ったかどうかを検出するために多くを行う必要はありません。

このルックアップテーブルを生成するために、いくつかのコードを(Cやその他の高水準言語で)記述します。単純なブルートフォース技術でさえ、あまりにも苦労することなく完璧な相手を表すルックアップテーブルを提供するはずです(ただし、ゲームのポイントは面白いですが、打ち勝つことが不可能な完璧な相手は楽しいものではないので、完璧はおそらく悪いですこの場合)。

必要なのは、ユーザー入力と表示コードのみです。 64 KiB未満のコード/データ/スタックでかなり簡単に実行できるはずなので、セグメントを混乱させる必要はありません。

これは実際の80186をテストするためのものです(現代の80x86 CPUは、私が覚えていれば、PUSH/POPにいくつかのバグと相違があったため、右)...

+0

プロセッサのバグのどれも、この単純なもので遊ぶべきではありません。 –

関連する問題