@@ -3176,7 +3176,7 @@ Const
3176
3176
Var
3177
3177
Score:LongInt;
3178
3178
Life,Level,Gold:Byte;
3179
- XMan,YMan,XManRun,YManRun:Integer;
3179
+ XMan,YMan,XManRun,YManRun,WaitYManRun :Integer;
3180
3180
CurrEnnemi:Byte;
3181
3181
XEnnemi,YEnnemi:Array [0 ..10 ]of Byte;
3182
3182
CurrTab:Array [0 ..15 ,0 ..27 ] of Char;
@@ -3210,11 +3210,13 @@ Procedure InitGame;Begin
3210
3210
TextBackground(0 );
3211
3211
TextColor(7 );
3212
3212
ClrScr;
3213
+ CursorOff;
3213
3214
Life:=3 ;
3214
3215
Score:=0 ;
3215
3216
Level:=1 ;
3216
3217
XManRun:=0 ;
3217
3218
YManRun:=0 ;
3219
+ WaitYManRun:=0 ;
3218
3220
LoadCurrLevel;
3219
3221
End ;
3220
3222
@@ -3324,7 +3326,7 @@ Begin
3324
3326
End ;
3325
3327
TextColor(15 );
3326
3328
TextBackground(0 );
3327
- GotoXY(30 ,18 );
3329
+ GotoXY(29 ,18 );
3328
3330
Write(' Niveau : ' ,Level);
3329
3331
End ;
3330
3332
@@ -3396,6 +3398,39 @@ Procedure RightMan;Begin
3396
3398
End ;
3397
3399
End ;
3398
3400
3401
+ Function UpMan :Boolean;Begin
3402
+ UpMan:=False;
3403
+ If YMan>0Then Begin { Up }
3404
+ If CurrTab[YMan,XMan]in [' H' ,' S' ]Then Begin
3405
+ XManRun:=0 ;
3406
+ HideMan;
3407
+ Dec(YMan);
3408
+ ShowMan;
3409
+ UpMan:=True;
3410
+ End ;
3411
+ End ;
3412
+ End ;
3413
+
3414
+ Function DownMan :Boolean;Begin
3415
+ DownMan:=False;
3416
+ If CurrTab[YMan+1 ,XMan]in [' H' ,' S' ]Then Begin
3417
+ XManRun:=0 ;
3418
+ HideMan;
3419
+ Inc(YMan);
3420
+ ShowMan;
3421
+ DownMan:=True;
3422
+ End
3423
+ Else
3424
+ If CurrTab[YMan+1 ,XMan]in [' ' ]Then Begin
3425
+ XManRun:=0 ;
3426
+ HideMan;
3427
+ Inc(YMan);
3428
+ ShowMan;
3429
+ DownMan:=True;
3430
+ YManRun:=1 ;
3431
+ End ;
3432
+ End ;
3433
+
3399
3434
Procedure RunGame ;
3400
3435
Var
3401
3436
I,Skip:Byte;
@@ -3463,38 +3498,42 @@ Begin
3463
3498
Skip:=(Skip+1 )and 3 ;
3464
3499
Until Keypressed;
3465
3500
K:=ReadKey;
3501
+ If (WaitYManRun=-1 )and (UpMan)Then Begin
3502
+ WaitYManRun:=0 ;
3503
+ End
3504
+ Else
3505
+ If (WaitYManRun=1 )and (DownMan)Then Begin
3506
+ WaitYManRun:=0 ;
3507
+ End
3508
+ Else
3466
3509
Case K of
3467
3510
' ' :XManRun:=0 ;
3468
3511
#0 :Case ReadKey of
3469
3512
#72 :Begin
3470
- If YMan>0Then Begin { Up }
3471
- XManRun:=0 ;
3472
- If CurrTab[YMan,XMan]in [' H' ,' S' ]Then Begin
3473
- HideMan;
3474
- Dec(YMan);
3475
- ShowMan;
3476
- End ;
3513
+ If (UpMan)Then Begin
3514
+ WaitYManRun:=0 ;
3477
3515
End
3478
3516
Else
3479
- If Gold<=0Then Begin
3517
+ If ( Gold<=0 ) and (YMan= 0 ) Then Begin
3480
3518
Inc(Level);
3481
3519
XManRun:=0 ;
3482
3520
YManRun:=0 ;
3483
3521
LoadCurrLevel;
3484
3522
ShowLevel;
3485
3523
ShowLife;
3486
- End ;
3524
+ End
3525
+ Else
3526
+ WaitYManRun:=-1 ;
3487
3527
End ;
3488
3528
#75 :LeftMan; { Left }
3489
3529
#77 :RightMan; { Right }
3490
3530
#80 :Begin { Down }
3491
- XManRun:=0 ;
3492
- If CurrTab[YMan+1 ,XMan]in [' H' ,' S' ]Then Begin
3493
- HideMan;
3494
- Inc(YMan);
3495
- ShowMan;
3496
- End ;
3497
- End ;
3531
+ If (DownMan)Then Begin
3532
+ WaitYManRun:=0 ;
3533
+ End
3534
+ Else
3535
+ WaitYManRun:=1 ;
3536
+ End
3498
3537
End ;
3499
3538
End ;
3500
3539
Until K=#27 ;
@@ -3504,4 +3543,5 @@ BEGIN
3504
3543
InitGame;
3505
3544
ShowLevel;
3506
3545
RunGame;
3546
+ CursorOn;
3507
3547
END .
0 commit comments