ABA


"שלום חברה :) אני בונה משחק לתחרות.. :)"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #5021 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 5021
Morishani

   16:39   03.02.03   
אל הפורום  
  שלום חברה :) אני בונה משחק לתחרות.. :)  
 
   לתחרות ארצית בqBASIC
בהתחלה זה בית ספרי, לאחר מכן זה מתפתח..

לנצח בספרי זה שני שניות..

הבעיה היא לפתח את המשחק - ובכל משחק זה קורא לי..
ובכן, לדוגמא :
יש לי נקודה - הנקודה זזה כל שלוש שניות.
וחוץ מזה שהיא זזה, יש לי אובייקט שאני שולט על מיקומו
(ע"י הפקודות inkey$ וchr$..).
הבעיה היא שעד שאני לא לוחץ על מקש כל שהוא , הנקודה לא זזה..
מישהו מוכן להסביר לי את הדרך לעשות דבר כזה?

תודה מראש


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  אני לא יודע qBasic liranr 03.02.03 17:39 1
     אני יודע שאין כזה דבר.. Morishani 03.02.03 17:47 2
         אמרתי לך liranr 03.02.03 20:25 3
             תודה :) Morishani 05.02.03 15:02 4
                 לא מאוד מומלץ... liranr 05.02.03 15:20 5
                     יש פתרונות טובים מDELAY dryice 05.02.03 19:02 6
                         נכון, גם אני חשבתי על זה אחרי שכתבתי liranr 05.02.03 19:10 8
                             לא כתבתי בQBASIC מאז היסודי, אבל dryice 05.02.03 22:48 9
                     צודק, חבל שאין פונקציה Morishani 05.02.03 19:02 7

       
liranr

   17:39   03.02.03   
אל הפורום  
  1. אני לא יודע qBasic  
בתגובה להודעה מספר 0
 
   ואין לי מושג מה זה $inkey אבל נראה לי שהבנתי את השאלה שלך באופן כללי.
יש לך גוף שאמור לזוז "לבד" ועוד גוף שהמשתמש אמור לשלוט על התזוזה שלו
בעזרת המקלדת או משהו דומה, וזה אמור להתרחש בו זמנית.
התשובה היא שבמחשבים אין באמת בו זמנית, כי המעבד מבצע רק פעולה אחד
בו זמנית. גם כשבווינדוס יש לך כמה חלונות פעילים בו זמנית הם לא באמת
עובדים "בו זמנית". הסוד הוא לעבור מהר מאחד לשני ככה שהמשתמש לא ירגיש
בהבדל.
זה גם מה שאתה אמור לעשות אצלך בתוכנה. כלומר באותה לולאה גם להזיז
את הגוף שזז לבד וגם לבדוק האם הגיע קלט ואם כן להזיז את הגוף השני


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Morishani

   17:47   03.02.03   
אל הפורום  
  2. אני יודע שאין כזה דבר..  
בתגובה להודעה מספר 1
 
   אבל אני מנסה והוא לא מקבל קלט ולכן עשיתי לולאה :
do
s$ = inkey$()
loop until s$


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranr

   20:25   03.02.03   
אל הפורום  
  3. אמרתי לך  
בתגובה להודעה מספר 2
 
   אני לא יודע qbasic, ואין לי מושג מה זה אומר.
בגדול ככה אתה צריך לעצב את הקוד שלך (זה רשום בפסאודו - קוד, לא בשפת
תכנות אמיתית):

while not finished do
move object1
if key is pressed move object2
end while

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Morishani

   15:02   05.02.03   
אל הפורום  
  4. תודה :)  
בתגובה להודעה מספר 3
 
   את הdelay בכל זאת לא הוספתי..
עשיתי משתנה בשם Time ובכל פעולה הוא מוסיף לו 1..
time += 1
ואז אם הוא שווה ל300000 האובייקט זז


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranr

   15:20   05.02.03   
אל הפורום  
  5. לא מאוד מומלץ...  
בתגובה להודעה מספר 4
 
   ככה המהירות שבה דברים זזים תלויה במהירות המחשב.
אם תיקח את המשחק לתחרות ושם יהיה 486 המשחק יזוז ברבע מהמהירות...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   19:02   05.02.03   
אל הפורום  
  6. יש פתרונות טובים מDELAY  
בתגובה להודעה מספר 5
 
   DELAY עושה לולאה והזמן הזה מתבזבז, הפתרון המוצלח הוא להשתמש
בשעון הפנימי של המחשב, יש לו דיוק של 55 מילי-שניות וזה לרוב מספיק.
אתה כל פעם לוקח את הזמן מהמחשב ומשווה למה שהיה קודם, וכך אתה יכול
לעשות משהוא בכל 55 מילי-שניות.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranr

   19:10   05.02.03   
אל הפורום  
  8. נכון, גם אני חשבתי על זה אחרי שכתבתי  
בתגובה להודעה מספר 6
 
   יש ב qBasic גישה לשעון המחשב?
היא שפה מאוד מוגבלת למיטב ידיעתי (למרות שכאמור אני לא ממש מכיר
את השפה)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   22:48   05.02.03   
אל הפורום  
  9. לא כתבתי בQBASIC מאז היסודי, אבל  
בתגובה להודעה מספר 8
 
   למיטב ידיעתי יש גישה לשעון, לכל הפחות יש גישה לשעון שניות
ע"י המשתנה TIMER שסופר שניות(אם אני לא מתבלבל), אני מאמין שיש פונקציה
שתחזיר מה השעה עכשיו, ואז היא תתן שעות,דקות,שניות ומאיות.
כאשר זה מתעדכן 18 פעם בשניה.


DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Morishani

   19:02   05.02.03   
אל הפורום  
  7. צודק, חבל שאין פונקציה  
בתגובה להודעה מספר 5
 
   שמגלה את מהירות המעבד..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net