Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » небольшой опрос

Ответить
Настройки темы
небольшой опрос

Новый участник


Сообщения: 47
Благодарности: 0

Профиль | Отправить PM | Цитировать


скажите,когда вы начали программировать- какая была первая программа(простая или сложная) ,
может заодно подскажите,с какой программы проще начинать писать,
откуда у вас берутся идеи,
и еще ,может глупый вопрос,а для написания пр-мы,жава скрипт?

Отправлено: 06:35, 28-04-2004

 

Pascal 4ever


Сообщения: 48
Благодарности: 0

Профиль | Отправить PM | Цитировать


begin
Writeln('HELLO WORLD!');
end.

#include <iostream.h>
void main(){
cout<<"HELLO WORLD!";
}
а бейсик я уже забыл.

Отправлено: 07:01, 28-04-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 47
Благодарности: 0

Профиль | Отправить PM | Цитировать


это вообще трудно- самому придумывать программы?

Отправлено: 08:30, 28-04-2004 | #3


Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата:
это вообще трудно- самому придумывать программы?
Все зависит от фантазии.

-------
Все, что хорошо начинается, кончается плохо. Все, что начинается плохо, кончается еще хуже.


Отправлено: 09:16, 28-04-2004 | #4


Пользователь


Сообщения: 61
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вобщето все проги пишутся для конкретной цели..... чего их придумивать???

Отправлено: 14:09, 28-04-2004 | #5


Аватара для Guest

Guest


Профиль | Цитировать


Я начал писать еще на spectrum... первые программы были на бейсике, потом на ассемблере... писал восновном игры, или менял уже готовые (благо на спектруме это было сделать легко), вот так ..
Regards, suxxl

Отправлено: 14:36, 28-04-2004 | #6


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


А я начал всё через "попу"
Начал программировать на PHP, так как мне нравилось интернет программирование и всё с этим связанное, а сейчас пора уже учится нормальному программированию и учу С++

А первая программа была следущая:

$i=1;
while ($i<10000000000)
{
     echo $i;
     $i++;
}
Что естественно привело к зависанию моего браузера (в принципе я этого и добивался) - вот такая вот история

-------
Fortes fortuna adiuvat


Отправлено: 20:24, 28-04-2004 | #7



Сообщения: 196
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Помню когда мне было еще лет 12 был у меня ibm 286. Вот это были времена. Писал проги на старом добром TP 6.0 (7.0). Запомнилась лишь игра типа РПГ только полностью текстовая. А так в сновном писал всякую ерунду, даже прогами назвать нельзя, учился одним словом. Первый код написанный мною был выдран из книги, некое подобие хеллоу ворлд.

Отправлено: 20:40, 28-04-2004 | #8


Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Предложение, если у кого то есть старые исходники - кинуть сюда, вместе посмеемся :-) сейчас я маленький кусочек найду :-)
вот основная программа
Цитата:
Uses Crt,key,GraphLib;
Var x,s,y: LongInt;
   Time : LongInt;
   Timer : LongInt absolute $40:$6c;

 Procedure movelka;
 Begin
 s:=1;
 x:=150;
 y:=100;
  Repeat
   Time:=Timer;
     Repeat Until Timer-Time>1;
   ClrVid2(0);
   PrintD('“&#231;&#168; &#143;*&#225;&#170;*«&#236; - ®&#226;®¬&#225;&#226;&#168;&#232;&#236;! ',1,1,3);
   ShowPicTransD(x,y,s);
   ShowDouble;
    If pressed [scLeft] then
     Begin
      dec(x,4);
      inc(s);
      if s>2 then s:=1;
     End else
    If pressed [scRight] then
     Begin
      inc(x,4);
      inc(s);
      if s>2 then s:=1;
     End else s:=1;
  Until pressed [scEsc];
 End;

BEGIN
GrInit;
Install_Handler;
ClrVid2(0);
ReadPicture('1.img');
ReadPicture('2.img');
TrCol:=$FF;
movelka;
GrDone;
Restore_Handler;
END.
и сама библиотека графическая:
Цитата:
Unit GraphLib;

{$L rus}
{$L mouse}
Interface

Uses Dos;

Type TPalette = Array[0..255] of record R,G,B : Byte; End; { &#143;*«&#168;&#226;&#224;* }
Const
     VGA256 = $13;
     TextMode = 3;
     PalMask = $36C;
     PalRegR = $3C7;
     PalRegW = $3C8;
     PalData = $3C9;

     fcFriend = 15;
     fcEnemy = 40;
     colGreen = 28;
     colYellow = 8;
     colRed = 40;
     fr=0;
     en=64;
     FadeSpeed : LongInt = 20; { ‘&#170;®&#224;®&#225;&#226;&#236; &#163;*&#232;&#165;*&#168;&#239;/&#175;&#224;®&#239;&#162;«&#165;*&#168;&#239; &#237;&#170;&#224;*** }

Type TVidBuf = Array[1..65100] of Byte;
    TSpr = Array[0..15,0..15] of byte;
    TFont = Array[128..239,1..8] of byte;
    TMouseBuf = Array[1..16,1..16] of byte;

Var SegDB : Word;
   GetBack : Byte;
   Fnt : ^TFont;
   Int1CSave : Pointer;
   MouseVis : Boolean;
   MouseX,MouseY : Integer;
   MouseBuf : ^TMouseBuf;
   MouseFile : File of TSpr;
   MouseSpr : ^TSpr;
   DoubleBuf : ^TVidBuf;
   FrameColor : Byte;
   Pic : Array[1..100] of record
                            W,H : Word;
                            Spr : Pointer;
                          End;
   LastP : Integer;
   TrCol : Byte;
   Pal : TPalette;

Procedure SetPalette(Pal : TPalette);
Procedure FadePal(Pal : TPalette);
Procedure LightPal(Pal : TPalette);
Procedure ReadPicture(FileName : String);
Procedure FreePicture(PicN : Byte);
Procedure ShowPicture(X,Y,PicN : Integer);
Procedure ShowPictureD(X,Y,PicN : Integer);
Procedure ShowPicTrans(X,Y,PicN : Integer);
Procedure ShowPicTransD(X,Y,PicN : Integer);
Procedure VRT;
Procedure ReadMouseState(Var XMo,YMo : Integer;Var Lb,Mb,Rb : Boolean);
Procedure DrawLeft(A : Word;P : Pointer);
Procedure DrawRight(A : Word;P : Pointer);
Procedure ShowFrame(X1,Y1,W,H : Word);
Procedure Pixel(x,y : Word; Color : Byte);
Procedure PixelD(x,y : Word; Color : Byte);
Procedure SetMode(Mode : Byte);
Procedure SetPalReg(index,Red,Green,Blue : Byte);
Procedure ClrVid(color : Byte);
Procedure ClrVid2(color : Byte);
Procedure Print(S : String;x,y : Word; color : Byte);
Procedure PrintD(S : String;x,y : Word; color : Byte);
Procedure ShowImage(x,y : Word;w,h : Word;Spr : Pointer);
Procedure ShowTrans(x,y : Word;w,h : Word;Spr : Pointer);
Procedure ShowImageD(x,y : LongInt;w,h : Word;Spr : Pointer);
Procedure ShowTransD(x,y : Word;w,h : Word;Spr : Pointer);
Procedure ShowSprD(x,y : Word;w,h : Word;Spr : Pointer;col : Byte);
Procedure ShowEnergy(x,y : LongInt;len,col : Byte);
{Procedure DrawSprite16(Spr : TSpr;x,y : Word);}
Procedure DrawSpriteD(Spr : TSpr;x,y : Word);
Procedure DrawSpriteT(Spr : TSpr;x,y : Word);
Procedure ReadUnderMouse;
Procedure ShowUnderMouse;
Procedure ShowMous;
Procedure ShowMous2;
Procedure ShowDouble;
Procedure ShowMouse;
Procedure HideMouse;
Procedure GrInit;
Procedure GrDone;

Implementation

Procedure RusFont; far; external;
Procedure MouseSp; far; external;

Procedure FadePal(Pal : TPalette);
Var A,B : LongInt;
P : TPalette;
T : LongInt;
Begin
 For B:=FadeSpeed downto 0 do
 Begin
   For A:=0 to 255 do
   Begin
     P[A].R:=Trunc(Pal[A].R*B/FadeSpeed);
     P[A].G:=Trunc(Pal[A].G*B/FadeSpeed);
     P[A].B:=Trunc(Pal[A].B*B/FadeSpeed);
   End;
   SetPalette(P);
   T:=MemL[$40:$6c];
   Repeat Until MemL[$40:$6c]-T>=1;
 End;
End;

Procedure LightPal(Pal : TPalette);
Var A,B : LongInt;
P : TPalette;
T : LongInt;
Begin
 For B:=0 to FadeSpeed do
 Begin
   For A:=0 to 255 do
   Begin
     P[A].R:=Trunc(Pal[A].R*B/FadeSpeed);
     P[A].G:=Trunc(Pal[A].G*B/FadeSpeed);
     P[A].B:=Trunc(Pal[A].B*B/FadeSpeed);
   End;
   SetPalette(P);
   T:=MemL[$40:$6c];
   Repeat Until MemL[$40:$6c]-T>=1;
 End;
End;



Procedure ReadPicture(FileName : String);
Var F : File;
W,H : Word;
Begin
 Assign(F,FileName);
 ReSet(F,1);
 BlockRead(F,W,2);
 BlockRead(F,H,2);
 Inc(LastP);
 GetMem(Pic[LastP].Spr,W*H);
 Pic[LastP].W:=W;
 Pic[LastP].H:=H;
 BlockRead(F,Pic[LastP].Spr^,W*H);
 BlockRead(F,Pal,SizeOf(Pal));
 Close(F);
 For W:=0 to 255 do SetPalReg(W,Pal[W].R,Pal[W].G,Pal[W].B);
End;

Procedure FreePicture(PicN : Byte);
Begin
 FreeMem(Pic[PicN].Spr,Pic[PicN].W*Pic[PicN].H);
End;

Procedure ShowPicture(X,Y,PicN : Integer);
Begin
 ShowImage(X,Y,Pic[PicN].W,Pic[PicN].H,Pic[PicN].Spr);
End;

Procedure ShowPicTrans(X,Y,PicN : Integer);
Begin
 ShowTrans(X,Y,Pic[PicN].W,Pic[PicN].H,Pic[PicN].Spr);
End;

Procedure ShowPicTransD(X,Y,PicN : Integer);
Begin
 ShowTransD(X,Y,Pic[PicN].W,Pic[PicN].H,Pic[PicN].Spr);
End;

Procedure ShowPictureD(X,Y,PicN : Integer);
Begin
 ShowImageD(X,Y,Pic[PicN].W,Pic[PicN].H,Pic[PicN].Spr);
End;

Procedure ReSetMouse;
Var R : Registers;
Begin
 R.ax:=0;
 Intr($33,R);
End;

Procedure ReadMouseState(Var XMo,YMo : Integer;Var Lb,Mb,Rb : Boolean);
Var R : Registers;
Begin
 R.ax:=3;
 Intr($33,R);
 XMo:=R.cx;
 YMo:=R.dx;
 Lb:=R.bx and 1=1;
 Rb:=R.bx and 2=2;
 Mb:=R.bx and 4=4;
End;

Procedure SetMode(Mode : Byte); assembler;
Asm
 Mov AH,0
 Mov AL,Mode
 Int 10h
End;

Procedure Pixel(x,y : Word; Color : Byte); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 Mov al,Byte Ptr color
 Mov es : [di],al
End;

Procedure PixelD(x,y : Word;Color : Byte); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 Mov al,Byte Ptr color
 Mov es : [di],al
End;

Procedure SetPalReg(index,Red,Green,Blue : Byte);
Begin
 Port[PalMask]:=$FF;
 Port[PalRegW]:=index;
 Port[PalData]:=Red;
 Port[PalData]:=Green;
 Port[PalData]:=Blue;
End;

Procedure SetPalette(Pal : TPalette);
Var I : Byte;
Begin
 For I:=0 to 255 do SetPalReg(I,Pal[i].R,Pal[i].G,Pal[i].B);
End;

Procedure ShMo;
Begin
 DrawSpriteD(MouseSpr^,MouseX,MouseY);
End;

Procedure RdMo; assembler;
Asm
 Push ds
 Les di,MouseBuf
 Mov si,MouseY
 Shl si,6
 Mov bx,si
 Shl si,2
 Add si,bx
 Add si,MouseX
 Push si
 Mov ax,SegDB
 Mov ds,ax
 Pop si
 Mov cx,16
 Cld
@m1 :
 Push cx
 Mov cx,8
 Rep MovsW
 Pop cx
 Add si,304
 Loop @m1
 Pop ds
End;

Procedure ShowDouble; assembler;
Asm
 Mov dl,MouseVis
 Push dx
 Mov MouseVis,0
 Cmp dl,1
 Jne @dal1
 Call RdMo
 Call ShMo
@dal1 :
 Push ds
 Mov ax,SegA000
 Mov es,ax
 Mov di,0
 Mov cx,32000
 Mov ax,SegDB
 Mov ds,ax
 Mov si,0
 Cld
 Rep MovsW
 Pop ds
 Pop dx
 Mov MouseVis,dl
End;

Procedure ShowFrame(X1,Y1,W,H : Word); assembler;
Asm
 mov ax,SegDB
 mov es,ax
 Mov di,y1
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x1
 mov cx,W
 mov al,FrameColor
 rep stosb
 add di,320
 sub di,w
 mov cx,h
 sub cx,2
@Met1:
 mov es:[di],al
 add di,w
 dec di
 mov es:[di],al
 inc di
 add di,320
 sub di,w
 loop @Met1
 mov cx,w
 rep stosb
End;

Procedure ClrVid(color : Byte); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 Mov di,0
 Mov cx,32000
 Mov ah,color
 Mov al,ah
 Cld
 Rep StosW
 Mov GetBack,al
End;

Procedure ClrVid2(color : Byte); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,0
 Mov cx,32000
 Mov ah,color
 Mov al,ah
 Cld
 Rep StosW
 Mov GetBack,al
End;

Procedure Print(S : String;x,y : Word; color : Byte);
Var i,x1,y1,Off : Word;

 Procedure Prt(Ch : Char;x,y,off : Word; color : Byte);
 Var WrkSeg,WrkOff,x2,y2,TOff : Word;
 BitMask,O : Byte;
 Begin
   If Ord(Ch)<128 then
   Begin
     TOff:=Off;
     WrkSeg:=$F000;
     WrkOff:=$FA6E+(Ord(Ch) shl 3);
     For y:=0 to 7 do
     Begin
       BitMask:=$80;
       For x:=0 to 7 do
       Begin
         If Mem[WrkSeg:WrkOff] and BitMask<>0 then Mem[SegA000TOff+x)]:=color
           else Mem[SegA000TOff+x)]:=GetBack;
         BitMask:=BitMask shr 1;
       End;
       Inc(TOff,320);
       Inc(WrkOff);
     End;
   End else
   Begin
     TOff:=Off;
     O:=Ord(CH);
     For y:=1 to 8 do
     Begin
       BitMask:=$80;
       For x:=0 to 7 do
       Begin
         If Fnt^[o,y] and BitMask<>0 then Mem[SegA000TOff+x)]:=color
           else Mem[SegA000TOff+x)]:=GetBack;
         BitMask:=BitMask shr 1;
       End;
       Inc(TOff,320);
     End;
   End;
 End;

Begin
 x1:=x;y1:=y;
 Off:=(y shl 8)+(y shl 6)+x;
 For i:=1 to length(s) do
 Begin
   Prt(s[i],x1,y1,off,color);
   Inc(x1,8);
   Inc(off,8);
 End;
End;

Procedure PrintD(S : String;x,y : Word; color : Byte);
Var Segm,i,x1,y1,Off : Word;

 Procedure PrtD(Ch : Char;x,y,off : Word; color : Byte);
 Var WrkSeg,WrkOff,x2,y2,TOff : Word;
 BitMask,O : Byte;
 Begin
   If Ord(Ch)<128 then
   Begin
     TOff:=Off;
     WrkSeg:=$F000;
     WrkOff:=$FA6E+(Ord(Ch) shl 3);
     For y:=0 to 7 do
     Begin
       BitMask:=$80;
       For x:=0 to 7 do
       Begin
         If Mem[WrkSeg:WrkOff] and BitMask<>0 then Mem[SegmTOff+x)]:=color
           else Mem[SegmTOff+x)]:=GetBack;
         BitMask:=BitMask shr 1;
       End;
       Inc(TOff,320);
       Inc(WrkOff);
     End;
   End else
   Begin
     TOff:=Off;
     O:=Ord(CH);
     For y:=1 to 8 do
     Begin
       BitMask:=$80;
       For x:=0 to 7 do
       Begin
         If Fnt^[o,y] and BitMask<>0 then Mem[SegmTOff+x)]:=color
           else Mem[SegmTOff+x)]:=GetBack;
         BitMask:=BitMask shr 1;
       End;
       Inc(TOff,320);
     End;
   End;
 End;

Begin
 x1:=x;y1:=y;
 Off:=(y shl 8)+(y shl 6)+x;
 Segm:=SegDB;
 For i:=1 to length(s) do
 Begin
   PrtD(s[i],x1,y1,off,color);
   Inc(x1,8);
   Inc(off,8);
 End;
End;

Procedure ShowImage(x,y : Word;w,h : Word;Spr : Pointer); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 lds si,spr
@Met1 :
 push cx
 mov cx,bx
 rep movsb
 pop cx
 add di,320
 sub di,bx
 Loop @Met1
 Pop ds
End;

Procedure ShowTrans(x,y : Word;w,h : Word;Spr : Pointer); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 mov dl,TrCol
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 lds si,spr
@Met1 :
 push cx
 mov cx,bx
@Met2 :
 mov al,ds:[si]
 cmp al,dl
 jz @Met3
 mov es:[di],al
@Met3:
 inc di
 inc si
 loop @Met2
 pop cx
 add di,320
 sub di,bx
 Loop @Met1
 Pop ds
End;

Procedure ShowImageD_a(x,y : Word;w,h : Word;Spr : Pointer); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 lds si,spr
@Met1 :
 push cx
 mov cx,bx
 rep movsb
 pop cx
 add di,320
 sub di,bx
 Loop @Met1
 Pop ds
End;

Procedure ShowICD_a(x,y,w,h,adr,wa : Word;Spr : Pointer); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 mov dx,wa
 lds si,spr
 add si,adr
@Met1 :
 push cx
 mov cx,bx
 rep movsb
 pop cx
 add di,320
 sub di,bx
 add si,dx
 Loop @Met1
 Pop ds
End;

Procedure ShowImageD(x,y : LongInt;w,h : Word;Spr : Pointer);
Var A,B,C,D : LongInt;
Begin
 If (X<=-W) or (Y<=-H) or (X>319) or (Y>199) then exit;
 If (X>=0) and (Y>=0) and (X<321-W) and (Y<=201-H) then
   ShowImageD_a(X,Y,W,H,Spr) else
   Begin
     A:=0; B:=0; C:=W-1; D:=H-1;
     If X<0 then Begin A:=-X; X:=0; End;
     If Y<0 then Begin B:=-Y; Y:=0; End;
     If X>320-W then C:=319-X;
     If Y>200-H then D:=199-Y;
     if (c-a+1<=0) or (d-b+1<=0) then
       a:=a;
     ShowICD_a(x,y,c-a+1,d-b+1,b*w+a,w-c+a-1,spr);
   End;
End;

Procedure ShowTransD(x,y : Word;w,h : Word;Spr : Pointer); assembler;
Asm
 Mov ax,SegDB
 mov dl,TrCol
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 lds si,spr
@Met1 :
 push cx
 mov cx,bx
@Met2 :
 mov al,ds:[si]
 cmp al,dl
 jz @Met3
 mov es:[di],al
@Met3:
 inc di
 inc si
 loop @Met2
 pop cx
 add di,320
 sub di,bx
 Loop @Met1
 Pop ds
End;

Procedure ShowSprD(x,y : Word;w,h : Word;Spr : Pointer;Col : Byte); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 lds si,spr
@Met1 :
 push cx
 mov cx,bx
@Met2 :
 mov al,ds:[si]
 cmp al,14
 jz @Met3
 cmp al,12
 jnz @Met4
 mov al,col
@Met4:
 mov es:[di],al
@Met3:
 inc di
 inc si
 loop @Met2
 pop cx
 add di,320
 sub di,bx
 Loop @Met1
 Pop ds
End;

Procedure ShowEnergy(x,y : LongInt;len,col : Byte);
Var A,B : LongInt;
Begin
 If (X<-len) or (X>319) then Exit else
 Begin
   For A:=0 to len-1 do
     For B:=0 to 1 do
       If (X+A>=0) and (X+A<320) and (Y+B>0) and (Y+B<200) then
         PixelD(X+A,Y+B,col);
 End;
End;

{Procedure DrawSprite16(Spr : TSpr;x,y : Word); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 lds si,spr
 mov cx,16
@Met1 :
 push cx
 mov cx,8
 rep movsw
 pop cx
 add di,304
 Loop @Met1
 Pop ds
End;}

Procedure DrawLeft(A : Word;P : Pointer); assembler;
Asm
 mov ax,SegDB
 cld
 mov es,ax
 push ds
 mov bx,A
 mov ax,320
 sub ax,bx
 mov dx,ax
 xor di,di
 lds si,P
 mov cx,200
@M1:
 add si,bx
 push cx
 mov cx,dx
 rep movsb
 add di,bx
 pop cx
 loop @M1
 pop ds
End;

Procedure DrawRight(A : Word;P : Pointer); assembler;
Asm
 mov ax,SegDB
 cld
 mov es,ax
 push ds
 mov bx,A
 mov ax,320
 sub ax,bx
 mov dx,ax
 xor di,di
 lds si,P
 mov cx,200
@M1:
 add di,dx
 push cx
 mov cx,bx
 rep movsb
 add si,dx
 pop cx
 loop @M1
 pop ds
End;


Procedure DrawSpriteT(Spr : TSpr;x,y : Word); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 lds si,spr
 mov cx,16
@Metk1 :
 push cx
 mov cx,16
@metk2 :
 Mov al,[si]
 Cmp al,0
 Je @metk3
 Mov es:[di],al
@metk3 :
 Inc si
 Inc di
 Loop @metk2
 pop cx
 add di,304
 Loop @Metk1
 Pop ds
End;


Procedure DrawSpriteD(Spr : TSpr;x,y : Word); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 lds si,spr
 mov cx,16
@Me1 :
 push cx
 mov cx,16
@Me2 :
 Mov al,[si]
 Cmp al,0
 Je @Me3
 Mov es:[di],al
@Me3 :
 Inc di
 Inc si
 Loop @Me2
 pop cx
 add di,304
 Loop @Me1
 Pop ds
End;

Procedure ReadUnderMouse; assembler;
Asm
 Push ds
 Les di,MouseBuf
 Mov si,MouseY
 Shl si,6
 Mov bx,si
 Shl si,2
 Add si,bx
 Add si,MouseX
 Mov ax,SegA000
 Mov ds,ax
 Mov cx,16
 Cld
@m1 :
 Push cx
 Mov cx,8
 Rep MovsW
 Pop cx
 Add si,304
 Loop @m1
 Pop ds
End;

Procedure ShowUnderMouse; assembler;
Asm
 Push ds
 Mov ax,SegA000
 Mov es,ax
 Mov di,MouseY
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,MouseX
 Lds si,MouseBuf
 Cld
 Mov cx,16
@mm1 :
 Push cx
 Mov cx,8
 Rep MovsW
 Pop cx
 Add di,304
 Loop @mm1
 Pop ds
End;

Procedure ShowMous;
Begin
 DrawSpriteT(MouseSpr^,MouseX,MouseY);
End;

Procedure ShowMous2;
Begin
 DrawSpriteD(MouseSpr^,MouseX,MouseY);
End;

Procedure ShowMouse;
Var Lb,Mb,Rb : Boolean;
Begin
 ReadMouseState(MouseX,MouseY,Lb,Mb,Rb);
 MouseX:=MouseX Shr 1;
 MouseVis:=True;
 ReadUnderMouse;
 ShowMous;
End;

Procedure HideMouse;
Begin
 MouseVis:=False;
 ShowUnderMouse;
End;

procedure VRT; assembler;
asm
 mov dx,3DAh
@VRT1:
 in al,dx
 test al,8
 jnz @VRT1
@VRT2:
 in al,dx
 test al,8
 jz @VRT2
end;

{$F+,S-,W-}
procedure TimerHandler; interrupt;
Var xm,ym : Integer;
Lb,Rb,Mb : Boolean;
 begin
   { Timer ISR }
   If MouseVis then
   Begin
     ReadMouseState(xm,ym,Lb,Mb,Rb);
     If (xm Shr 1<>MouseX) or (ym<>MouseY) then
     Begin
       ShowUnderMouse;
       MouseX:=Xm Shr 1;
       MouseY:=Ym;
       If MouseX>304 then MouseX:=304;
       If MouseY>184 then MouseY:=184;
       ReadUnderMouse;
       ShowMous;
     End;
   End;
 end;
{$F-,S+}

Procedure GrInit;
Var a,b,c : Longint;
F : File of Byte;
Lb,Rb,Mb : Boolean;
S,O : Word;
Begin
 LastP:=0;
 MouseSpr:=@MouseSp;
 New(MouseBuf);
 MouseVis:=False;
 ResetMouse;
 GetIntVec($1C,Int1CSave);
 SetIntVec($1C,@TimerHandler);
 New(DoubleBuf);
 SegDB:=Seg(DoubleBuf^)+1;
 SetMode(VGA256);
{  MakePal;}
 GetBack:=0;
End;

Procedure GrDone;
Begin
{  Dispose(DoubleBuf);}
 Release(HeapOrg);
 SetMode(TextMode);
 SetIntVec($1C,Int1CSave);
End;

var a,b,c : longint;
s,o : Word;
Begin
 New(Fnt);
 S:=Seg(RusFont);
 O:=Ofs(RusFont);
 c:=0;
 For a:=128 to 239 do
   For b:=1 to 8 do
   Begin
     Fnt^[a,b]:=Mem[S:O+c];
     Inc(c);
   End;
 LastP:=0;
End.
Добавлено:

мля :-) малость переборщил :р

-------
Вся наша жизнь - игра.... вот только б не повисла...


Отправлено: 21:46, 28-04-2004 | #9


Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата:
Предложение, если у кого то есть старые исходники - кинуть сюда, вместе посмеемся :-) сейчас я маленький кусочек найду :-)
вот основная программа
Жалко,после того как полетел винт,у меня остались только исходники моего интерпритатора,да и то в распечатанном виде

-------
Все, что хорошо начинается, кончается плохо. Все, что начинается плохо, кончается еще хуже.


Отправлено: 22:44, 28-04-2004 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » небольшой опрос

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Опрос: Хочешь ли ты в армию РФ?! REFIS Флейм 55 05-10-2010 02:25
Разное - [опрос] Как вы используете Windows 7 Malfatto Microsoft Windows 7 15 16-05-2009 02:19
Небольшой опрос про он - лайн игры DvD505 Игры 3 15-03-2008 02:44
периодический опрос координат мышки Dafi Вебмастеру 5 10-03-2005 15:00
Опрос: Бюджетный компьютер mad raven Непонятные проблемы с Железом 32 21-10-2004 15:46




 
Переход