1 of 44

שיעור 9

אפליקציה רבת-שחקנים

2 of 44

פלטפורמת Sender

3 of 44

4 of 44

5 of 44

אחרי לחיצה על תיבה 4 - אנחנו רואים בקונסול ש:�1.שלחנו הודעה על קליק על תיבה 4.

2. קיבלנו הודעה על קליק על תיבה 4.

6 of 44

אנחנו רואים בקונסול ש:�קיבלנו הודעה על קליק על תיבה 4.

משמע: בוצעה הקלקה על כפתור מספר 4 בחלון דפדפן אחר

7 of 44

הכל מבוסס על צ'אט, או שליחת הודעות - אחד שולח, כולם מקבלים�Broadcast

8 of 44

התקנת שרת node.js�מקומי localhost

9 of 44

א. התקנת node.js:

בחרו את "הגרסה שמתאימה לרוב המשתמשים" פה:

https://nodejs.org/en/

ב. הורדת הזיפ של פלטפורמת הסנדר.

http://www.tau.ac.il/~ehadas/must/sender.zip

יש לפתוח אל תוך תיקיה במחשב.

10 of 44

ג. הרצת השרת:

יש לפתוח cmd, לעשות cd לפולדר ומשם להריץ node index.js

לראות שאין שגיאות.

ד. התחברות לשרת:

יש לפתוח דפדפן ולגלוש ל- http://localhost:3000

ה. בדיקה:

יש לפתוח חלון גלישה בסתר ולגלוש לאותו מקום. לצ'וטט ביניהם וללחוץ על התיבות.

11 of 44

12 of 44

13 of 44

שליחת הודעה

14 of 44

our.js

index.html

15 of 44

our.js

כשנרצה לשלוח הודעה:

  1. נוסיף הפעלה של האיוונט בתוך ה-HTML
  2. נשלח הודעה בתוך הפונקציה ע"י שימוש בפונקציה socket.emit

index.html

16 of 44

קבלת הודעה

17 of 44

our.js

זהו המקרה בו קיבלנו הודעה מסוג chat message שענתה לקטגוריה ###box### ואז מספר התיבה.

במקרה כזה נקבל קריאה לפונקציה receiveBox עם מספר התיבה ונוכל לטפל באירוע על-ידי עדכון ה-DOM

18 of 44

our.js

זהו המקרה בו קיבלנו הודעה מסוג chat message שמתחילה ב- ###box### ואז מספר התיבה.

במקרה כזה נקבל קריאה לפונקציה receiveBox עם מספר התיבה ונוכל לטפל באירוע על-ידי עדכון ה-DOM

19 of 44

טיפול בהודעה ספציפית

20 of 44

21 of 44

22 of 44

דוגמה: משחק שאלות� "זה הסוד שלי"

23 of 44

נרצה שיהיו שני שחקנים. האחד אמור לגלות מה הסוד של השני. האחד שואל שאלות (דרך הצ'אט). השני עונה בכן ולא.

24 of 44

נרצה ליצור שני קבצים: player1.html

player2.html

כדי שהשרת יכיר את הקבצים, נצטרך לערוך את index.js

25 of 44

26 of 44

27 of 44

אחרי שינוי בשרת, יש "להוריד" ו"להעלות" אותו. נעצור את התהליך ונריץ מחדש.

28 of 44

תרגיל 1: העתיקו את index.html ל-player1.html ול-player2.html, עדכנו את index.js, הורידו והעלו את השרת כך ששניהם יעבדו.

29 of 44

נרצה לעצב את המשחק. נצטרך לקבוע מה ההודעות שישלחו בין שני השחקנים.

30 of 44

שחקן 1 - השואל:

א. שליחת טקסט - נשתמש בצ'אט.

ב. הודעת "נכנעתי" - נשתמש באחת התיבות.

31 of 44

שחקן 2 - המשיב:

א. שליחת טקסט - לא נאפשר.

ב. הודעות "כן", "לא", "לא פה ולא שם" - באמצעות תיבות.

32 of 44

הודעות מיוחדות (ניתן להם מספרים):

100 - נכנעתי

101 - כן

102 - לא

103 - לא פה ולא שם

33 of 44

player1.html

34 of 44

player2.html

35 of 44

תרגיל 2: עדכנו את קבצי ה-HTML.

36 of 44

נותר לנו לעדכן את הלוגיקה כאשר אנחנו מקבלים את ההודעות. למעשה בכל התיבות שהגדרנו פשוט נוסיף את הטקסט המתאים לשיחה.

37 of 44

נותר לנו לעדכן את הלוגיקה כאשר אנחנו מקבלים את ההודעות. למעשה בכל התיבות שהגדרנו פשוט נוסיף את הטקסט המתאים לשיחה.

38 of 44

הוספת הטקסט "נכנעתי" לתיבת השיחה:

document.getElementById("messages").innerHTML +=

"<li> נכנעתי </li>";

39 of 44

תרגיל: �איפה מוסיפים את השורה הזו?

באיזה תנאי?

40 of 44

�איפה מוסיפים את השורה הזו?

כשההודעה מתקבלת - receiveBox

באיזה תנאי?

שקיבלנו את ההודעה המתאימה, קוד 100.

41 of 44

our.js

הוא משותף לכל ה-HTML-ים

42 of 44

תרגיל 3: �הוסיפו באותו מקום את עדכון הצ'אט להודעות האחרות. הריצו!

43 of 44

44 of 44

הקוד זמין לכם פה:

http://tau.ac.il/~ehadas/must/questions.zip