Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337

Выполнение действие при нажатии кнопки Enter и после задержки.

12.03.2015, 11:15. Показов 1170. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть игра пинг-понг, есть код, мне необходимо, сделать так, чтобы при нажатии на кнопку Enter начиналась игра, как это можно реализовать. Много читал про это, но где это можно разместить не пойму
HTML5
1
2
3
4
5
6
7
8
9
10
11
<!doctype html>
<html>
    <head>
        <title>Ping Pong</title>
        <script src="ping pong.js"></script>
    </head>
    <body onload = "Game()">
        <canvas id="canvas" width="600" height="400">
        </canvas>
    </body>
</html>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
function Game(){
    var canvas = document.getElementById("canvas");
    var scr = canvas.getContext("2d");
    
    var w = canvas.width;
    var h = canvas.height;
    
    var Spgame = 2;
    var bord = 20; 
    var linew = 3;
    var lineh = 10;
    var lineGap = 2;
    var lineX= w/2 - linew/2;
    var lineY = 0;
    var lineCount = h /(lineh  + lineGap)
    var rad = 7;
    
    var ballX = w/2;
    var ballY = h/2; 
    
    var SpeedBallX = 1;
    var SpeedBallY  = 1;
    
    var dxBall = -1;
    var dyBall = -1;
    
    var xPlayer1 = w - 35;
    var yPlayer1 = h /2;
    
    var  wPlayer1 = 12;
    var hPlayer1 = 60;
    
    var DirPlayer1 = 0;
    
    var SpeedPlayer1 = 2;
    
    var xPlayer2 =  25
    var yPlayer2 = h /2;
    
    var  wPlayer2 = 12;
    var hPlayer2 = 60;
    
    var DirPlayer2 = 0;
    
    var SpeedPlayer2 = 2;
    
    var CountPlayer1 = 0;
    var CountPlayer2 = 0;
    
    function draw(){
        
        scr.clearRect(0, 0, w, h);
        scr.fillStyle = "black";
        scr.fillRect(0,0, w, h);
        
        scr.fillStyle = "white";
        for(var i =0; i <lineCount; i++){
        
        lineY = i * (lineh  + lineGap);
        scr.fillRect(lineX, lineY, linew, lineh);
        }
        scr.fillStyle = "orange";
        scr.fillRect(0,0, w, bord);
        scr.fillRect(0, h - bord, w, bord);
        scr.fillRect(0, 0, bord, h );
        scr.fillRect(w-bord, 0, bord, h);
        
        scr.fillStyle = "green";
        scr.beginPath();
        scr.arc(ballX, ballY, rad, 0, Math.PI * 2, false);
        scr.fill();
        scr.closePath();
        
        ballX = ballX + SpeedBallX * dxBall;
        ballY = ballY + SpeedBallY * dyBall;
        
        if (ballX < bord + rad){
            
        SpeedBallY = 0; 
        SpeedPlayer2 =0;
        ballX = bord + rad;
        gameOver1();
        
        } 
        if (ballY <= bord + rad) {
            
            dyBall = 1;
        }
        if (ballY >= h - bord - rad) {
            
            dyBall = -1;
        }
        if (ballX > w-bord- rad) {
            
        SpeedBallY = 0; 
        SpeedPlayer1 =0;
        ballX = w - bord - rad;
        gameOver2();
        
        }
        if(ballY >= yPlayer1 && ballY <= yPlayer1 + hPlayer1 && ballX >= xPlayer1 && ballX <= xPlayer1 + hPlayer1){
            
            dxBall = -1;
            CountPlayer1++;
            
        }
        if(ballY >= yPlayer2 && ballY <= yPlayer2 + hPlayer2 && ballX >= xPlayer2 && ballX <= xPlayer2+ wPlayer2){
            
            dxBall = 1;
            CountPlayer2++;
            
        }   
        if(yPlayer1 >= h - bord - hPlayer1){
            
            yPlayer1 = h - bord - hPlayer1;
        }
        if(yPlayer1 < bord){
            
            yPlayer1 = bord;
        }
        if(yPlayer2 >= h - bord - hPlayer2){
            
            yPlayer2 = h - bord - hPlayer2;
        }
        if(yPlayer2 < bord){
            
            yPlayer2 = bord;
        }
        scr.fillStyle = "red";
        scr.fillRect(xPlayer1, yPlayer1, wPlayer1, hPlayer1);
        scr.fillRect(xPlayer2, yPlayer2, wPlayer2, hPlayer2);
        
        yPlayer1 = yPlayer1 + SpeedPlayer1 * DirPlayer1;
        yPlayer2 = yPlayer2 + SpeedPlayer2 * DirPlayer2;
        
        if(CountPlayer1 == 3 || CountPlayer2 == 3){
            
            SpeedBallX = SpeedBallY = 3/2;
        };
        
        point();
        
    
    };
    function point(){
        
        scr.fillStyle ="black";
        scr.font = "16px TimesNewRoman";
        scr.fillText("Point : " + CountPlayer1, 525, 15);
        scr.font = "16px TimesNewRoman";
        scr.fillText("Point : " + CountPlayer2, 20, 15);
        
    };
    function gameOver1(){
        
        scr.fillStyle = "white";
        scr.font = "18px Arial, sans-serif";
        scr.fillText("GameOver: 1 Player wins - " + CountPlayer1 + " point" , w/2-130,  h/2);
        setTimeout(restart, 3000);
    };
        function gameOver2(){
        
        scr.fillStyle = "white";
        scr.font = "18px Arial, sans-serif";
        scr.fillText("GameOver: 2 Player wins - " + CountPlayer2 + " point", w/2 -130, h/2);
        setTimeout(restart, 3000);
    };
    function restart() {
        
        location.reload();
    };
    document.onkeydown = function(Game){
        if(Game.keyCode == 38){
            DirPlayer1 =-1;
            
        }
        if(Game.keyCode == 87){
            DirPlayer2 =-1;
            
        }
        if(Game.keyCode == 40){
            DirPlayer1=1;
            
        }
        if(Game.keyCode == 83){
            DirPlayer2=1;
            
        }
    }
    document.onkeyup = function(Game){
        if(Game.keyCode ==38 || Game.keyCode == 40){
            DirPlayer1 =0;
        }
        if(Game.keyCode == 87 || Game.keyCode == 83){
            DirPlayer2 =0;
        }
    }
    setInterval(draw, Spgame);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2015, 11:15
Ответы с готовыми решениями:

Имитация нажатии кнопки при нажатии ENTER в инпуте
Друзья подскажите пожалуйся не могу найти информацию Есть input type=&quot;text&quot; при нажатии Enter нужно имитировать нажатии button (id=mybtn)...

Сделать так, чтобы при двойном нажатии левой кнопки мыши по ссылке происходило некое действие
Мне нужно сделать так, чтобы при двойном нажатии левой кнопки мыши по ссылке происходило некое действие. Код примерно такой: function...

Перевод строки при нажатии на Enter
Как сделать, чтобы при нажатии на Enter, как-то вставлялся тег &lt;br&gt;? Есть поле с отправкой сообщения в БД, у меня уже стоит скрипт,...

2
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
12.03.2015, 15:06
1) добавьте между <head> и </head> стилевой блок <style></style>, если его там нет

2) внутри стилевого блока пропишите правило html, body {height: 100%}

3) уберите из тега <body> вызов функции onload="Game()"

4) в начало вашего js-файла допишите две строки:
JavaScript
1
2
onload = function () {document.body.onkeydown = init; alert ('Нажмите ENTER для начала игры')}
function init (e) {var e = window.event || e; if (e.keyCode == 13) Game(); document.body.onkeydown = ''}
PS. ваша функция restart () - это нечто восхитительное
1
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
12.03.2015, 19:43  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
ваша функция restart () - это нечто восхитительное
Понимаю, что смешно выглядит, но ничего другого не нашел, а что нужно еще добавить, чтобы после нажатия на Enter, игра началась только через какое-то время, использовать setTimeout()?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.03.2015, 19:43
Помогаю со студенческими работами здесь

Как при нажатии на enter добавить <br/>?
Всем привет! Есть textarea и скрипт, который выводит текст и вставляет в textarea. Если я делаю перенос строки и пытаюсь сохранить, то...

Отправка формы при нажатии enter
Здравствуйте. Есть форма допустим так &lt;input size='18' type='text' name='login' /&gt; &lt;input size='18' type='password' name='pass'...

Активация button при нажатии на enter
вот такой вот глупенький вопрос от новичка. есть инпут. туда вбиваешь имя. оно переносится в тег &lt;p&gt; при клике на button. как...

действие при нажатии на эскейп
сделал так - при нажатии на картинку она увеличивается ну и при нажатии на нее она уменьшается , а как сделать чтобы она уменьшалась так же...

True/False в поле ввода после нажатия кнопки Enter
Здравствуйте Помогите пожалуйста решить неисправность на web странице с java scriptom. После ввода в поле информации и нажатия enter...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru