- Код: Выделить всё
Kolor = 1 'this is the COLOR for the title `PING-PONG'
CLS
SCREEN 12
PRINT " PING PONG"
PRINT : PRINT
PRINT : PRINT
PRINT "Use the arrow keys to move the"
PRINT "left paddle. If the ball passes the"
PRINT "computer's paddle, you get a point."
PRINT "Whoever gets 10 points first wins."
PRINT : PRINT
INPUT "(V)ery Hard, (H)ard, (M)edium, (E)asy:", sp$
IF sp$ = "H" OR sp$ = "h" THEN sd = 300
IF sp$ = "m" OR sp$ = "M" THEN sd = 500
IF sp$ = "E" OR sp$ = "e" THEN sd = 700
IF sp$ = "V" OR sp$ = "v" THEN sd = 200
IF sd = 0 THEN sd = 1100
INPUT "Press enter to start.", st$
start:
CLS
x = 10: y = 200
x2 = 240: y2 = 200
a = 140: b = 100
d = 0: po1 = 0: po2 = 0
l = 1: r = 0
dr$ = ""
ky:
Kolor = Kolor + 1
IF Kolor > 15 THEN Kolor = 1
COLOR Kolor
LOCATE 1, 1: PRINT "PING-PONG"
COLOR 15
LOCATE 1, 30: PRINT "Your Score:"; p: LOCATE 1, 45: PRINT "Computer's Score:"; p2
a$ = INKEY$
LINE (x, y)-(x + 6, y + 29), 0, BF
IF a$ = CHR$(0) + CHR$(72) THEN y = y - 5: dr$ = "up"
IF a$ = CHR$(0) + CHR$(80) THEN y = y + 5: dr$ = "down"
IF a$ = CHR$(0) + CHR$(75) THEN dr$ = "stop"
IF a$ = CHR$(0) + CHR$(77) THEN dr$ = "stop"
IF a$ = CHR$(27) THEN END
IF dr$ = "up" THEN y = y - 5
IF dr$ = "down" THEN y = y + 5
IF y < 10 THEN y = 10
IF y > 170 THEN y = 170
LINE (x, y)-(x + 6, y + 29), 4, BF
ball:
CIRCLE (a, b), 6, 0
PAINT (a, b), 0
IF a > x2 THEN l = 1: r = 0: RANDOMIZE TIMER: d = INT(RND * 10) - 5: PLAY "l30c"
IF a < x THEN r = 1: l = 0: RANDOMIZE TIMER: d = INT(RND * 10) - 5: PLAY "l30c"
IF l = 1 THEN a = a - 5: b = b + d
IF r = 1 THEN a = a + 5: b = b + d
IF b < 20 THEN b = 20
IF b > 170 THEN b = 170
IF b > y + 15 OR b < y THEN po1 = 1
IF b > y2 + 15 OR b < y2 THEN po2 = 1
GOTO chk
ball2:
CIRCLE (a, b), 6, 1
PAINT (a, b), 1
computer:
LINE (x2, y2)-(x2 + 6, y2 + 29), 4, BF
IF l = 1 THEN GOTO time
LINE (x2, y2)-(x2 + 6, y2 + 29), 0, BF
IF d < 0 THEN y2 = y2 - 6
IF d > 0 THEN y2 = y2 + 6
IF b < y2 THEN y2 = y2 - 6
IF b > y2 + 15 THEN y2 = y2 + 6
IF y2 < 10 THEN dr2$ = "down"
IF y2 > 170 THEN dr2$ = "up"
IF dr2$ = "down" THEN y2 = y2 + 5
IF dr2$ = "up" THEN y2 = y2 - 5
FOR tm = 1 TO sd: NEXT tm
LINE (x2, y2)-(x2 + 6, y2 + 29), 4, BF
time:
FOR tm = 1 TO sd: NEXT tm
GOTO ky:
chk:
IF a > x2 AND po2 = 1 THEN p = p + 1
IF a < x AND po1 = 1 THEN p2 = p2 + 1
IF p = 10 THEN PRINT "YOU WIN": END
IF p2 = 10 THEN PRINT "COMPUTER WINS": END
IF a > x2 AND po2 = 1 THEN GOTO start
IF a < x AND po1 = 1 THEN GOTO start
po2 = 0
po1 = 0
GOTO ball2
Что - то уже полдня немогу сделать чтобы:
при нажатии кнопки влево, ракетка поворачивалась немного против часовой стрелки
при нажатии вправо - немного по часовой стрелке. Это основная проблема, ну и как дополнительная - угол отскока шарика также при этом должен изменяться...
Помогите кодом (или псевдокодом хотя - бы), а то завтра уже должно быть что-то похожее на истину!
P.S.: Жалко нельзя заюзать Cpp+STL+GDI (((