עבור לתוכן

JAVA|עזרה קטנה ביצירת משחק ("סנייק")

Featured Replies

פורסם

אהלן,

אני יוצר משחק סנייק פשוט ויש לי בעיה קטנה שאני לא יודע איך לפתור,

הסנייק שלי מורכב מ"קוביות" (תמונה מגודל 10px),

כדי שהסנייק יזוז בצורה חלקה אני מזיז את הקובייה הראשונה רק ב 1px כל פעם (עושה לה setBounds) ואז עובר בלולאה על שאר ה"קוביות" ונותן להם את הקורדינטה של הקובייה שכבר התקדמה קדימה (setLocation). מכאן נוצרת בעיה, כי הרי התזוזה היא של 1px אבל הקובייה היא 10px אז כל הקוביות מתכווצות יחד ולא מופרדות.

אני מעוניין שכל הסנייק יזוז בייחד רק 1px לפני כל sleep, מה עלי לעשות?

(ניסיתי כבר כל מיני דרכים אבל אז נוצרות בעיות אחרות, אשמח לפתרון יצירתי :) ).

תודה.

פורסם

מומלץ שתאמר גם באיזו שפה אתה כותב (ותוסיף את זה לכותרת).

למה להזיז את הקוביה הראשונה באמצעות setBounds ולא באמצעות setLocation גם כן?

חוץ מזה לא ממש הבנתי מה הבעיה בדיוק... למה הקוביות מתכווצות? (או שהתכוונת שהן מתקבצות?)

פורסם
  • מחבר

היי,

דבר ראשון אני כותב בשפה java,

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

אך אם הקובייה השנייה עוברת למקום הקודם של הקובייה הראשונה זזנו 10 פיקסלים (כי הרי הקובייה הראשונה זזה רק פיקסל אחד ממקומה הקודם).

איך ניתן לעשות כך שכל הקוביות יעקבו רק פיקסל אחד לקובייה הקודמת להם?

תודה.

פורסם

אוקי, עכשיו זה יותר ברור. אתה בעצם צריך לדאוג שכל קוביה תזוז רק פיקסל אחד, והבעיה היא כמובן לדעת באיזה כיוון הקוביה צריכה לזוז.

אני אישית יכול לחשוב על כמה דרכים לעשות את זה...

נניח שנייה לשם הנוחות שהמרחק בין שתי קוביות הוא בדיוק 10.

אפשר שכל קוביה תזכור את הכיוון שלה, ואז כל 10 צעדים כל קוביה צריכה להעתיק את הכיוון של הקוביה שבאה לפניה (והקוביה הראשונה משנה את הכיוון שלה בהתאם למה שהמשתמש לחץ, כמובן).

אופציה שנייה היא שהרי כל קוביה צריכה להיות במיקום שהקוביה שלפניה הייתה בדיוק לפני 10 פריימים, ככה שאתה יכול פשוט לזכור את כל 10 המיקומים האחרונים של כל הקוביות (באמצעות תור מחוכם).

פורסם
  • מחבר

אני מתייחס עכשיו לאופציה הראשונה שהצעת,

איך אני יכול לזכור את הכיוון של כל קובייה, הרי רק הקובייה הראשונה היא זאת שמשנה כיוון וכל שאר הקוביות "עוקבות" אחריה.

למשל הקובייה הראשונה משנה כיוון מימין למעלה אז בצעד הבא הקובייה שעוקבת לה גם כן צריכה לשנות כיוון.

פורסם

אתה יכול לזכור מה שבא לך, פשוט תשמור את המידע הזה איפשהו (המחלקה שמחזיקה את הכיוון של הקוביה הראשונה תחזיק את הכיוון של שאר הקוביות).

פורסם
  • מחבר

שוב.. איך?

הרי רק הקובייה הראשונה משנה מיקום, כל השאר עוקבות והכיוון שלהן משתנה לפי הקובייה הראשונה.

פורסם

מה זאת אומרת איך?

משתנים, מערכים וכו'.

איך נראה הקוד שלך?

פורסם

למה שלא רק הקובייה האחרונה תזוז למיקום שלפני הראשונה?

פורסם

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים