PDA

View Full Version : كمك در ساخت آدمك و حركت آن توسط صفحه كليد



teymoorei
شنبه 30 اردیبهشت 1391, 16:09 عصر
سلام دوستان
همون طور كه از تيتر تاژپيك معلومه من يه برنامه مي خوام كه يك آدمك چاپ بشه و توسط صفحه كليد حركت كنه .
اين پرو‍‍ژه پايان ترمم هستش و خيلي هم عجله دارم .
لطفا كمك كنيد

xman_1365_x
یک شنبه 31 اردیبهشت 1391, 18:28 عصر
برای رسم آدم میتونید در هر دو مد کار کنید و مسلما در مد گرافیک میتونه ظاهر بهتری نسبت به کد زیر که نوشتم داشته باشه:لبخندساده:


datasg segment
pkey db "press any key...$"

enter equ 13,10
dollar equ '$'

humanbeing db " () ",enter
db " /||\",enter
db " /\ ",enter,dollar
datasg ends

stacksg segment stack
dw 128 dup(0)
stacksg ends

codesg segment
start:
; set segment registers:
mov ax, datasg
mov ds, ax
mov es, ax


lea dx, humanbeing
mov ah, 9
int 21h

lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx

; wait for any key....
mov ah, 1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h

codesg ends

end start ; set entry point and stop the assembler.
end


بعد از ایجاد تیبل در هر کدوم از مد ها آن را نمایش میدین و بعد از گرفتن ورودی ، ساده ترین روش پاک کردن صفحه و انتقال به کرسر یا پیکسل مورد نظر هست که قبلا وقفه های مربوطه گفته شده !
برای گرفتن کد های جهتدار هم قبلا مطالب زیادی در مورد اسکن کد ها (http://www.shsu.edu/~csc_tjm/spring2005/cs272/scan_codes.html) گفته شده در سایت جستجو کنید.

موفق باشید

دانشجویان دانشگاه آزاد
دوشنبه 08 خرداد 1391, 02:21 صبح
دوستان برای حرکت این آدمک باید چکار کرد.من با 4 تا دستور پرش و تغییر مکان نما کاری کردم به طرف پایین حرکت کنه اما کماکان به چپ و راست حرکت نمی کنه.؟///

ssbostan
دوشنبه 08 خرداد 1391, 17:22 عصر
سلام؛
شما ميتونيد از برنامه زير كه براتون نوشتم استفاده كنيد. اين برنامه جهت حركت دادن = در صفحه هست.
الگوريتم برنامه من رو نگاه كنيد و در برنامه خودتون پياده سازي كنيد.





mov ax, 0b800h
mov ds, ax

mov si, 0a0h

mov ds:[0a0h], '='


get_key:

mov ah, 00h
int 16h

cmp ah, 48h
jz go_up

cmp ah, 50h
jz go_down

cmp ah, 4bh
jz go_left

cmp ah, 4dh
jz go_right


jmp get_key


go_up:
mov di, si
sub di, 0a0h
mov [di], '='
mov [si], 0
mov si, di
jmp get_key


go_down:
mov di, si
add di, 0a0h
mov [di], '='
mov [si], 0
mov si, di
jmp get_key

go_left:
mov di, si
sub di, 02h
mov [di], '='
mov [si], 0
mov si, di
jmp get_key


go_right:
mov di, si
add di, 02h
mov [di], '='
mov [si], 0
mov si, di
jmp get_key



موفق باشيد.

دانشجویان دانشگاه آزاد
سه شنبه 09 خرداد 1391, 21:38 عصر
الان برای الحاق چکار باید کرد.لطفا راهنمایی الحاق رو بکنید.من خودم با 4 تا دستور گرفتن کلید و تغییر مکان نما و مجدد برگشت به ابتدا و چاپ مجدد آن امتحان کردم اما متاصفانه یا برنامه بی نهایت میشه یا حرکتش قفل میشه ی فقط به پایین حرکت میکنه.لطفا راهنمایی کنید چطور برنامه شما رو میشه الحاق کرد به آدمک .من یک برنامه مثل برنامه ی شما از قبل برای حرکت مربع داشتم ولی چون تجربم پایینه الحاقش یک مقدار زمان بره برام.ممنون

ssbostan
سه شنبه 09 خرداد 1391, 22:16 عصر
در پست هاي همين انجمن بگرديد در مورد شيفت كردن رشته ها در حافظه گرافيكي صحبت شده. از كدهاي ارسال شده در اون تاپيك ميتونيد رشته رو به صورت آدمك طراحي كنيد و بعد در حافظه گرافيكي قرار بديد.
براي حركت هم از كد بالا استفاده كنيد.
براي اينكه آدمك از محدوده صفحه خارج نشه و برنامه با مشكل روبرو نشه الگوريتم هاي مختلفي هست كه با كمي تفكر و خلاقيت ميتونيد خودتون بنويسيد.

ansaralghaem
شنبه 13 خرداد 1391, 14:41 عصر
سلام دوستان بلاخره برنامه کامل شد فق دوستان باید Emu8086 v.4.08 رو دانلود کنند
http://s2.p30download.com/users/202/software/development/compiler-interpreter/emu8086.v4.08_p30download.com.zip
مشکلاتی هم داره که البته کوچک است حالا اجراش کنید میفهمید


; Standard header:
#make_Com#
ORG 100H

jmp Start
shekl db " () ",'$'
shekl1 db "/||\",'$'
shekl2 db " ||",'$'

ClearScreen Macro color
MOV AX , 0600H
MOV CX , 0000H
MOV DX , 204fh
INT 10H
ENDM
;;

Start:
; wait for any key....
push dx
push bx
mov bh,1
ClearScreen 6
pop bx
pop dx
;Head
mov ah,02
inc dl
int 10h
push dx
lea dx, shekl
mov ah, 9
int 21h
pop dx
;tne
push dx
mov ah,02
inc dh
inc dl
int 10h
push dx
lea dx, shekl1
mov ah, 9
int 21h
pop dx
;;;foot
mov ah,02
inc dh
int 10h
push dx
lea dx, shekl2
mov ah, 9
int 21h
pop dx
pop dx
get_key:
mov ah, 00h
int 16h

cmp ah, 48h
je go_up

cmp ah, 50h
je go_down

cmp ah, 4bh
je go_left

cmp ah, 4dh

je go_right

;go_up
go_up:
push dx
push bx
mov bh,2
ClearScreen 6

pop bx
pop dx
;;Head
mov ah,02
dec dh
dec dh
push dx
dec dl
int 10h
pop dx
push dx
lea dx, shekl
mov ah, 9
int 21h
pop dx
;Badan
push dx
mov ah,02
inc dh
int 10h
push dx
lea dx, shekl1
mov ah, 9
int 21h
pop dx
;foot
push dx
mov ah,02
inc dh
int 10h
push dx
lea dx, shekl2
mov ah, 9
int 21h
pop dx
pop dx
jmp get_key

;go_down:
go_down:


push dx
push bx
mov bh,3
ClearScreen 6

pop bx
pop dx
;head
mov ah,02
inc dh
push dx
dec dl
int 10h
pop dx
push dx
lea dx, shekl
mov ah, 9
int 21h
pop dx
;Badan
push dx
mov ah,02
inc dh
int 10h
push dx
lea dx, shekl1
mov ah, 9
int 21h
pop dx
;foot
push dx
mov ah,02
inc dh
int 10h
push dx
lea dx, shekl2
mov ah, 9
int 21h
pop dx
pop dx
jmp get_key
;go right

go_right:

;clear
push dx
push bx
mov bh,4
ClearScreen 6
pop bx
pop dx
;head
mov ah,02
inc dl
int 10h
push dx
lea dx, shekl
mov ah, 9
int 21h
pop dx
;Badan
push dx
mov ah,02
inc dh
inc dl
int 10h
push dx
lea dx, shekl1
mov ah, 9
int 21h
pop dx
;;;foot
mov ah,02
inc dh
int 10h
push dx
lea dx, shekl2
mov ah, 9
int 21h
pop dx
pop dx
jmp get_key
;go_left
go_left:
;clear
push dx
push bx
mov bh,8
ClearScreen 6

pop bx
pop dx
;head
mov ah,02
dec dl
int 10h
push dx
lea dx, shekl
mov ah, 9
int 21h
pop dx
;Badan
push dx
mov ah,02
inc dl
inc dh
int 10h
push dx
lea dx, shekl1
mov ah, 9
int 21h
pop dx
;;;foot
mov ah,02
inc dh
int 10h
push dx
lea dx, shekl2
mov ah, 9
int 21h
pop dx
pop dx

jmp get_key


;end
; Exit to operating system:
MOV AH, 4Ch
INT 21h

ssbostan
شنبه 13 خرداد 1391, 15:17 عصر
با سلام؛
برنامه درست طراحي نشده و در هنگام جابجايي كاملا مشخصه كه كد مشكل داره و آدمك زيادتر از يك واحد حركت ميكنه.
در ضمن بهتره اطلاعات حافظه گرافيكي رو مانند آرايه شيفت بديد تا....

موفق باشيد.

دانشجویان دانشگاه آزاد
یک شنبه 14 خرداد 1391, 18:37 عصر
تازه شدی مثل اول من با این تفاوت که مال من فقط به پایین حرکت میکرد.دیگه فایده ای برای من که نداره.

ولی بازم ایول داری..موفق باشی.

ansaralghaem
سه شنبه 16 خرداد 1391, 12:11 عصر
سلام برنامه رو کامل وانشاا.. بهودی میزارمش فقط چندتا نقص کوچک داره
یاعلی