学校のプロジェクトでは、Visual Studioでmasm32アセンブラを使用してゲームを作成する必要があります。 私は今までにかなり良い進歩を遂げましたが、私は解決できない問題があります。衝突を起こすことです。 私が構築したゲームには、ボールをバスケットに衝突させるために使用する必要があるサーフェイス\プラットフォームのキングがいくつかあります。問題は、何らかの理由で衝突を正しく行うことができないため、ボールがプラットフォームを正しく通過することです。 誰かが私が間違ったことを理解できるように助けることができますか?Masm32:アセンブリで衝突を行う方法
衝突のコード:
ballmovement PROC
pusha
mov eax,yball
cmp eax,ysurf
jge surfacecollision
jmp exit
surfacecollision:
mov eax,xball
cmp eax,xsurf
jb exit
mov ebx,xsurf
add ebx,240
cmp eax,ebx
jg exit
mov eax, -1
mov yangle,eax
jmp exit
exit:
mov eax,xangle
add xball,eax
mov eax,yangle
add yball,eax
popa
ret
ballmovement ENDP
コードはボール面の一方の側の間であれば表面 のYおよびチェックよりもボールのYとを比較することになっていますx軸の他のもの。もしそうなら、それはyangle -1に移動し、それをyballに加えてボールを上に上げます。 ballmovement procはメインproc内のループを通して常にアクティブです。ループでは、x:xball y:yball 誰かが私を助けることができるボールを再描画するコマンドですか? ありがとう!
「変数」の定義をすべて追加するだけで、十分なメモリが割り当てられていることを確認しています。 – Ped7g
そして、コードはちょっと簡略化されているかもしれませんし、座標が符号付きか符号なしかを決めるべきです( '' jb exit''はunsigned "below"、 'jg exit'は" greater "これはそのまま動作するはずなので、デバッガで実行し、テストが失敗する理由(おそらく最初のコールで衝突するようなボールとサーフェイスの位置を初期化する)を自分で確認してください。 – Ped7g