PDA

معاينة النسخة الكاملة : مازال هنالك بعض المشاكل في الاكواد



game_maker
09 / 08 / 2002, 03:49 AM
السلام عليكم :)
في البدء ... بعد ان كنبت الموضوع ..رأيت انه طوييييل...لذا اعذروني :)
بعد شغل يومان متواصله في لعبه ماريوا...وجدت بعض المشاكل...وجدت انها معقده جدا :( مما ظننت :
فهي اول لعبه (حقيقيه ) اعمل عليها :-

اولا : مكشله التحريك مع تقدم الصوره ورجعوها :
- انشأت خلفيه عريضه فيها الحفر والاماكن المرتفعه وانشأة الشخصيه .
عندما احرك الشخصية في البداية...ستتحرك بسلاسه ... ولاكن عندما ربطت تقدم الصورة برجوع الشخصية
كما في الكود التالي :
If KeyCode = 39 Then
Picture1.Left = Picture1.Left + 300 / الشخصية
Picture8.Left = Picture8.Left - 200 / الخلفيه
Image1.Left = Image1.Left - 200 / العنصر (1)
اصبحت تقدم الشخصية بطيء وممل...هل اربط احرك الخلفيه بعنصر timer ؟
العنصر (1) : عنصر انشأته لكي يكون محل المكان المرتفع الاول بالخلفيه لكي اتحكم بالارتفاع الضاهر بالخلفيه
طبعا جعلت image1.visible = false ....
_______________

القفز : انشأت القفز بواسطه ثلاث عنصر Timer ....
Timer1 : يتحكم بخاصية Top
Timer2 : يتحكم بخاصية Top
Timer3 : يتحكم بخاصيه Left
جعلت التوب له عنصرين TIMER لانني ان وضعت عنصر واحد سيتعارض مع القفزه لان القفز في TOP
سيكون هكذا 1 - 2 - 3 - 2 - 1 ..اي سيرتفع ثم سيهبط ...(اعتقد ان كلامي غير واضح لذا هاهو الكود )

السلام عليكم :)
في البدء ... بعد ان كنبت الموضوع ..رأيت انه طوييييل...لذا اعذروني :)
بعد شغل يومان متواصله في لعبه ماريوا...وجدت بعض المشاكل...وجدت انها معقده جدا :( مما ظننت :
فهي اول لعبه (حقيقيه ) اعمل عليها :-

اولا : مكشله التحريك مع تقدم الصوره ورجعوها :
- انشأت خلفيه عريضه فيها الحفر والاماكن المرتفعه وانشأة الشخصيه .
عندما احرك الشخصية في البداية...ستتحرك بسلاسه ... ولاكن عندما ربطت تقدم الصورة برجوع الشخصية
كما في الكود التالي :
If KeyCode = 39 Then
Picture1.Left = Picture1.Left + 300 / الشخصية
Picture8.Left = Picture8.Left - 200 / الخلفيه
Image1.Left = Image1.Left - 200 / العنصر (1)
اصبحت تقدم الشخصية بطيء وممل...هل اربط احرك الخلفيه بعنصر timer ؟
العنصر (1) : عنصر انشأته لكي يكون محل المكان المرتفع الاول بالخلفيه لكي اتحكم بالارتفاع الضاهر بالخلفيه
طبعا جعلت image1.visible = false ....
_______________

القفز : انشأت القفز بواسطه ثلاث عنصر Timer ....
Timer1 : يتحكم بخاصية Top
Timer2 : يتحكم بخاصية Top
Timer3 : يتحكم بخاصيه Left
جعلت التوب له عنصرين TIMER لانني ان وضعت عنصر واحد سيتعارض مع القفزه لان القفز في TOP
سيكون هكذا 1 - 2 - 3 - 2 - 1 ..اي سيرتفع ثم سيهبط ...(اعتقد ان كلامي غير واضح لذا هاهو الكود )

Private Sub Form_Load()
a = 1
time2 = 150
jumpx = 500
jumpy = 5900
time = -200
Timer1.Interval = 50
Timer1.Enabled = False
Timer3.Interval = 50
Timer3.Enabled = False
speed = 150
Timer2.Interval = 100
Timer2.Enabled = False

----
If a = 1 Then
If KeyCode = 32 Then
Timer1.Enabled = True
Timer2.Enabled = True
Timer3.Enabled = True
Picture1 = Picture9
a = 2
End If

-----
Private Sub Timer1_Timer()

jumpy = jumpy + time
Picture1.Top = jumpy

If s >= 500 And s <= 900 Then
time = -100
End If
If s > 900 And s <= 1500 Then
time = -20
End If
If s > 1500 And s <= 2100 Then
time = 20
End If
If s > 2100 And s <= 2500 Then
time = 100
End If
If s > 2500 Then
time = 200
End If
If Picture1.Left < Picture8.Left And Picture1.Left + Picture1.Width > Picture8.Left And Picture1.Top + Picture1.Height > Picture8.Top Then
Timer3.Enabled = False
End If

If Picture1.Top >= 5900 Or (Picture1.Top < Picture8.Top And Picture1.Top + Picture1.Height > Picture8.Top And Picture1.Left > Picture8.Left And Picture1.Left < Picture8.Left + Picture8.Width) Then
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
Picture1 = Picture4
s = 0
time = -200
a = 1
----

Private Sub Timer2_Timer()
s = s + speed
End Sub
----

Private Sub Timer3_Timer()
jumpx = jumpx + time2
Picture1.Left = jumpx
End Sub

..مايفعله الكود غير انه يقوم بالقفز :
يبطل عمل جميع المفاتيح حتى تنتهي القفزه ( الامر a=1 , a=2 )
اذا قفزت الشخصيه حتى تعتلي المرتفع ولاكنها لم تصل الى العلو المطولب فإن الTimer3 = false اي انه ينزل .
يقف فوق المرتفع.

ارأيتم (لا اعرف شي عن البرمجة) فهذه الطريقه لا يفهمها احد ....فهل يوجد طريقة افضل ؟

___________
كود التحريك الكامل :
If KeyCode = 39 Then
If Picture1.Left + Picture1.Width > Picture8.Left And Picture1.Top + Picture1.Height > Picture8.Top And Picture1.Left < Picture8.Left Then
Exit Sub
End If
End If


If KeyCode = 39 Then
Picture1.Left = Picture1.Left + 300
Picture8.Left = Picture8.Left - 200
Image1.Left = Image1.Left - 200
jumpx = jumpx + 300
If kr = 1 Then
Picture1 = Picture2
kr = 2
ElseIf kr = 2 Then
Picture1 = Picture3
kr = 1
End If
End If

ما يقوم به الكود غير التحريك لليمين :
يضيف للjumpx مقدار المسافه التي تحركت بها حتى اقفز من المكان اللذي توقفت عنده .
اذا كانت الشخصيه اصطدمت بالمرتفع فإنها تتوقف ....

طبعا واهم مشكله عندي ان القياسات غير دقيقه. مره يوقف على الارض ومره تحتها..و..و...
الشخصيه مرسومه في مربع لونه اسود ..كيف ابعد اللون الاسود (mask)
الاصوات...كيف ادخل اصوات MIDI , WAV

طبعا الاجوبه...تحتاج صفحات :) .............جاوب على اللي تقدر عليه ;)

EGY_Tiger
10 / 08 / 2002, 01:36 AM
بسم الله الرحمن الرحيم

الحقيقة أخي العزيز أنا أحيي فيك اهتمامك باللعبة ومثابرتك عليها

ولكن أنا لا أستطيع متابعة الأكواد على الموقع

يمكنك أن ترسل لي اللعبة على بريدي ثم أشارك معك في حل أو توضيح المشاكل

تحياتي

game_maker
11 / 08 / 2002, 12:59 PM
مشكور اخوي ..... ماقصرت :)
بس انا اجلت اللعبه كلها....لاني تعلمت طرق برمجه افضل واسرع ..وانا قاعد اتلعم API زي BITBLT ...و غيرها.... ولما اخلص من التعليم...ابدا بالتطبيق (اسوي العاب :) )

أسد الله
24 / 11 / 2002, 12:36 AM
الأسئلة قدمتها سهلة وهاهي حلولها :
1- بالنسبة لكل مشاكل التحرك جرب
2- الـ STATUS FUNCTION مع وضع فريم مربوط بالSTATUS
وهذا طريقة التحريك في لعبة ميتل غير .
بالنسبة للصوت استخدم play_entsound ثم ضع صوتك إذا ما فهمت علي أسأل .

احمد صالح
24 / 11 / 2002, 12:35 PM
play_entsound :eek2: :confused: