Abdullah Talib نشر 26 مارس 2021 أرسل تقرير نشر 26 مارس 2021 مثلا زر W وزر A بتاريخ 1 ساعة قال Abdullah Talib: مثلا زر W وزر A الرجاء الرد بسرعة هذاالكود الخاص بي: def keyPressed(): qw() qe() def qw(): global player_1_y old_y_player_1 = player_1_y if keyboard.keyCode == UP: player_1_y = player_1_y - 50 if keyboard.keyCode == DOWN: player_1_y = player_1_y + 50 if player_1_y < 0 or player_1_y + 50 > height: player_1_y = old_y_player_1 def qe(): global player_2_y old_y_player_2 = player_2_y if keyboard.keyCode == LEFT: player_2_y = player_2_y - 50 if keyboard.keyCode == RIGHT: player_2_y = player_2_y + 50 if player_2_y < 0 or player_2_y + 10 > height: player_2_y = old_y_player_2 وتعمل الشيفرة لكن المشكلة أنه لاعبين يقومان باللعب والحركة تذهب للأعلى والأسفل أريد فقط تغيير الزر من زر LEFT إلى زر W ومن زر RIGHT إلى زر S اقتباس
1 Wael Aljamal نشر 26 مارس 2021 أرسل تقرير نشر 26 مارس 2021 إن الدالة keyboard.keyCode تعيد المحرف المضفوط بترميز ASCII فيمكنك مقارنها مع قيمة المحرف للحرف الذي تريده لكن يفضل بالحالتين الكبيرة و الصغيرة لضمنان معالجتها بالطريقة الصحيحة if keyboard.keyCode == Letter: _______________________^^^^^^ = ASCII لتصبح: if keyboard.keyCode == 'W' or keyboard.keyCode == 'w' : اقتباس
0 Abdullah Talib نشر 27 مارس 2021 الكاتب أرسل تقرير نشر 27 مارس 2021 بتاريخ 9 ساعات قال Wael Aljamal: إن الدالة keyboard.keyCode تعيد المحرف المضفوط بترميز ASCII فيمكنك مقارنها مع قيمة المحرف للحرف الذي تريده لكن يفضل بالحالتين الكبيرة و الصغيرة لضمنان معالجتها بالطريقة الصحيحة if keyboard.keyCode == Letter: _______________________^^^^^^ = ASCII لتصبح: if keyboard.keyCode == 'W' or keyboard.keyCode == 'w' : لقد قمت بذلك لكن ربما توجد مشكلة بتاريخ منذ ساعة مضت قال Abdullah Talib: هذه البرمجة from processing import * width = 550 height = 400 move_x = 7 move_y = 2 lives_player_1 = 5 lives_player_2 = 5 player_1_x = 50 player_1_y = 220 player_2_x = 550 player_2_y = 220 ball_x = 300 ball_y = 220 goal_player_1_x = -2 goal_player_1_y = 0 goal_player_2_x = 576 goal_player_2_y = 0 player_1_width = 10 player_1_height = 100 player_2_width = 10 player_2_height = 100 ball_width = 50 ball_height = 50 goal_player_1_width = 26 goal_player_1_height = 455 goal_player_2_width = 26 goal_player_2_height = 455 def setup(): global back global player_1 global player_2 global ball global goal_player_1 global goal_player_2 size(600, 450) back = loadImage("back.png") player_1 = loadImage("player_1.png") player_2 = loadImage("player_2.png") ball = loadImage("ball.png") goal_player_1 = loadImage("goal_player_1.png") goal_player_2 = loadImage("goal_player_2.png") def draw(): global ball_x global ball_y global move_x global move_y global lives_player_1 global lives_player_2 ball_x = ball_x + move_x ball_y = ball_y + move_y if ball_x < 0 or ball_x > width: move_x = -move_x if ball_y < 1 or ball_y > height: move_y = -move_y if ball_x < 0 or is_colliding(player_1_x, player_1_y, player_1_width, player_1_height, ball_x, ball_y, ball_width, ball_height) or ball_x > width: move_x = -move_x if ball_y < 0 or is_colliding(player_2_x, player_2_y, player_2_width, player_2_height, ball_x, ball_y, ball_width, ball_height) or ball_y > width: move_x = -move_x if lives_player_1 > 0 and lives_player_2 > 0: image(back, 0, 0) image(ball, ball_x, ball_y) image(player_1, player_1_x, player_1_y) image(player_2, player_2_x, player_2_y) image(goal_player_1, goal_player_1_x, goal_player_1_y) image(goal_player_2, goal_player_2_x, goal_player_2_y) textSize(20) fill(255, 255, 255) text("Lives player1 = {}".format(lives_player_1), 100, 30) text("Lives player2 = {}".format(lives_player_2), 400, 30) check_collision_with_walls() if lives_player_1 == 0: textSize(60) fill(0, 0, 0) rect(0, 0, 600, 450) fill(255, 0, 0) text("Player 2 Win", 150, 250) if lives_player_2 == 0: textSize(60) fill(0, 0, 0) rect(0, 0, 600, 450) fill(255, 0, 0) text("Player 1 Win", 150, 250) def keyPressed(): qw() qe() def qw(): global player_1_y old_y_player_1 = player_1_y if keyboard.keyCode == 'W' or keyboard.keyCode == 'w': player_1_y = player_1_y - 50 if keyboard.keyCode == 'S' or keyboard.keyCode == 's' : player_1_y = player_1_y + 50 if player_1_y < 0 or player_1_y + 10 > height: player_1_y = old_y_player_1 def qe(): global player_2_y old_y_player_2 = player_2_y if keyboard.keyCode == UP: player_2_y = player_2_y - 50 if keyboard.keyCode == DOWN: player_2_y = player_2_y + 50 if player_2_y < 0 or player_2_y + 10 > height: player_2_y = old_y_player_2 def check_collision_with_walls(): global goal_player_1 global lives_player_1 global goal_player_2 global lives_player_2 global player_1_x global player_1_y global player_2_x global player_2_y global ball_x global ball_y if is_colliding(goal_player_1_x, goal_player_1_y, goal_player_1_width, goal_player_1_height, ball_x, ball_y, ball_width, ball_height): ball_x = 500 ball_y = 220 player_1_x = 50 player_1_y = 220 player_2_x = 550 player_2_y = 220 lives_player_1 = lives_player_1 - 1 if is_colliding(goal_player_2_x, goal_player_2_y, goal_player_2_width, goal_player_2_height, ball_x, ball_y, ball_width, ball_height): ball_x = 100 ball_y = 220 player_1_x = 50 player_1_y = 220 player_2_x = 550 player_2_y = 220 lives_player_2 = lives_player_2 - 1 def is_colliding(first_x, first_y, first_width, first_height, second_x, second_y, second_width, second_height): first = (first_x + first_width) > second_x second = first_x < (second_x + second_width) third = (first_y + first_height) > second_y fourth = first_y < (second_y + second_height) return first and second and third and fourth run() اقتباس
0 Wael Aljamal نشر 27 مارس 2021 أرسل تقرير نشر 27 مارس 2021 بتاريخ 2 ساعات قال Abdullah Talib: ربما توجد مشكلة ما هي المشكلة؟ اقتباس
0 Abdullah Talib نشر 27 مارس 2021 الكاتب أرسل تقرير نشر 27 مارس 2021 لا يعمل زر مع معاكسه يعني مثلا قمت ببرمجة زر W للأعلى وقمت بتشغيله فورا فعمل الزر لتحريك اللاعب للأعلى وكان زر التحريك للأسفل هو زر LEFT لكن عندما قمت بتغيير من زر LEFT إلى زر S لم أستطع تحريك الكائن للأعلى أو للأسفل اقتباس
0 Wael Aljamal نشر 27 مارس 2021 أرسل تقرير نشر 27 مارس 2021 بتاريخ منذ ساعة مضت قال Abdullah Talib: لا يعمل زر مع معاكسه يعني مثلا قمت ببرمجة زر W للأعلى وقمت بتشغيله فورا فعمل الزر لتحريك اللاعب للأعلى وكان زر التحريك للأسفل هو زر LEFT لكن عندما قمت بتغيير من زر LEFT إلى زر S لم أستطع تحريك الكائن للأعلى أو للأسفل في الألعاب يجب أن يكون حدث الاستامع للنقر غير متزامن و غير تسلسلي أي يمكن نقر زرين في نفس الوقت و حدوث استجابة فورية لا أعلم بالضبط إن كانت هذه أفضل طريقة لعمل هذا. يمكنك محاولة استخدام الدالة is_pressed: import keyboard while True: # حلقة اللعب if keyboard.is_pressed('q'): # if key 'q' is pressed print('You Pressed A Key!') كرر هذا لكل زر ترغب به. لاستخدام مستمع أحداث عليك بالتالي: from pynput.keyboard import Key, Listener def on_press(key): print('{0} pressed'.format( key)) def on_release(key): print('{0} release'.format( key)) if key == Key.esc: # Stop listener return False # Collect events until released with Listener( on_press=on_press, on_release=on_release) as listener: listener.join() اقتباس
0 Abdullah Talib نشر 27 مارس 2021 الكاتب أرسل تقرير نشر 27 مارس 2021 تقدر توضح بصورة أبسط أنا في مسابقة وبعد أنا مبتدِئ يعني لو سمحت بسطه بصورة أكثر والمشكلة المسابقة ما تستقبل شي اسمه import keyboard أو شبيهاتها اقتباس
0 Wael Aljamal نشر 27 مارس 2021 أرسل تقرير نشر 27 مارس 2021 بتاريخ 10 ساعات قال Abdullah Talib: والمشكلة المسابقة ما تستقبل شي اسمه import keyboard أو شبيهاتها مكتبة keyboard مضمنة بالأصل و انت تستخدمها فلا حاجة لهذا السطر اقتباس
0 Abdullah Talib نشر 28 مارس 2021 الكاتب أرسل تقرير نشر 28 مارس 2021 (معدل) بتاريخ 23 ساعات قال Abdullah Talib: لقد قمت بذلك لكن ربما توجد مشكلة from processing import * width = 550 height = 400 move_x = 7 move_y = 2 lives_player_1 = 5 lives_player_2 = 5 player_1_x = 50 player_1_y = 220 player_2_x = 550 player_2_y = 220 ball_x = 300 ball_y = 220 goal_player_1_x = -2 goal_player_1_y = 0 goal_player_2_x = 576 goal_player_2_y = 0 player_1_width = 10 player_1_height = 100 player_2_width = 10 player_2_height = 100 ball_width = 50 ball_height = 50 goal_player_1_width = 26 goal_player_1_height = 455 goal_player_2_width = 26 goal_player_2_height = 455 def setup(): global back global player_1 global player_2 global ball global goal_player_1 global goal_player_2 size(600, 450) back = loadImage("back.png") player_1 = loadImage("player_1.png") player_2 = loadImage("player_2.png") ball = loadImage("ball.png") goal_player_1 = loadImage("goal_player_1.png") goal_player_2 = loadImage("goal_player_2.png") def draw(): global ball_x global ball_y global move_x global move_y global lives_player_1 global lives_player_2 ball_x = ball_x + move_x ball_y = ball_y + move_y if ball_x < 0 or ball_x > width: move_x = -move_x if ball_y < 1 or ball_y > height: move_y = -move_y if ball_x < 0 or is_colliding(player_1_x, player_1_y, player_1_width, player_1_height, ball_x, ball_y, ball_width, ball_height) or ball_x > width: move_x = -move_x if ball_y < 0 or is_colliding(player_2_x, player_2_y, player_2_width, player_2_height, ball_x, ball_y, ball_width, ball_height) or ball_y > width: move_x = -move_x if lives_player_1 > 0 and lives_player_2 > 0: image(back, 0, 0) image(ball, ball_x, ball_y) image(player_1, player_1_x, player_1_y) image(player_2, player_2_x, player_2_y) image(goal_player_1, goal_player_1_x, goal_player_1_y) image(goal_player_2, goal_player_2_x, goal_player_2_y) textSize(20) fill(255, 255, 255) text("Lives player1 = {}".format(lives_player_1), 100, 30) text("Lives player2 = {}".format(lives_player_2), 400, 30) check_collision_with_walls() if lives_player_1 == 0: textSize(60) fill(0, 0, 0) rect(0, 0, 600, 450) fill(255, 0, 0) text("Player 2 Win", 150, 250) if lives_player_2 == 0: textSize(60) fill(0, 0, 0) rect(0, 0, 600, 450) fill(255, 0, 0) text("Player 1 Win", 150, 250) def keyPressed(): qw() qe() def qw(): global player_1_y old_y_player_1 = player_1_y if keyboard.keyCode == 'W' or keyboard.keyCode == 'w': player_1_y = player_1_y - 50 if keyboard.keyCode == 'S' or keyboard.keyCode == 's' : player_1_y = player_1_y + 50 if player_1_y < 0 or player_1_y + 10 > height: player_1_y = old_y_player_1 def qe(): global player_2_y old_y_player_2 = player_2_y if keyboard.keyCode == UP: player_2_y = player_2_y - 50 if keyboard.keyCode == DOWN: player_2_y = player_2_y + 50 if player_2_y < 0 or player_2_y + 10 > height: player_2_y = old_y_player_2 def check_collision_with_walls(): global goal_player_1 global lives_player_1 global goal_player_2 global lives_player_2 global player_1_x global player_1_y global player_2_x global player_2_y global ball_x global ball_y if is_colliding(goal_player_1_x, goal_player_1_y, goal_player_1_width, goal_player_1_height, ball_x, ball_y, ball_width, ball_height): ball_x = 500 ball_y = 220 player_1_x = 50 player_1_y = 220 player_2_x = 550 player_2_y = 220 lives_player_1 = lives_player_1 - 1 if is_colliding(goal_player_2_x, goal_player_2_y, goal_player_2_width, goal_player_2_height, ball_x, ball_y, ball_width, ball_height): ball_x = 100 ball_y = 220 player_1_x = 50 player_1_y = 220 player_2_x = 550 player_2_y = 220 lives_player_2 = lives_player_2 - 1 def is_colliding(first_x, first_y, first_width, first_height, second_x, second_y, second_width, second_height): first = (first_x + first_width) > second_x second = first_x < (second_x + second_width) third = (first_y + first_height) > second_y fourth = first_y < (second_y + second_height) return first and second and third and fourth run() إذا ما الخطأ هنا إذاً؟؟ تم التعديل في 28 مارس 2021 بواسطة Abdullah Talib اقتباس
السؤال
Abdullah Talib
مثلا زر W
وزر A
هذاالكود الخاص بي:
def keyPressed(): qw() qe() def qw(): global player_1_y old_y_player_1 = player_1_y if keyboard.keyCode == UP: player_1_y = player_1_y - 50 if keyboard.keyCode == DOWN: player_1_y = player_1_y + 50 if player_1_y < 0 or player_1_y + 50 > height: player_1_y = old_y_player_1 def qe(): global player_2_y old_y_player_2 = player_2_y if keyboard.keyCode == LEFT: player_2_y = player_2_y - 50 if keyboard.keyCode == RIGHT: player_2_y = player_2_y + 50 if player_2_y < 0 or player_2_y + 10 > height: player_2_y = old_y_player_2
وتعمل الشيفرة لكن المشكلة أنه لاعبين يقومان باللعب والحركة تذهب للأعلى والأسفل
أريد فقط تغيير الزر من زر LEFT إلى زر W
ومن زر RIGHT إلى زر S
8 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.