PDA

View Full Version : سوال: مشکل در بازی توپ



mani007
دوشنبه 18 اردیبهشت 1396, 01:20 صبح
سلام ، وقت بخیر خدمت دوستان عزیز
پرژوه بازی توپ ویژال بسیک رو به زبان c# بازنویسی کردم که متاسفانه با وجود این که هیچ خطایی نداره ولی کار نمیکنه
اصل سورس به زبان VB6 و بازنویسی به زبان C# رو گذاشتم ، ممنون میشم بررسی و رفع عیب کنید.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


int keymove, zaman ,result;
double stepx, stepy, stepzarf;



private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
keymove = 0;


}


private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left)
keymove = -1;


if (e.KeyCode == Keys.Right)
keymove = 1;




}


private void Form1_Load(object sender, EventArgs e)
{
stepx = 50;
stepy = -50;
stepzarf = 100;

}


private void TMove_Tick(object sender, EventArgs e)
{
zaman = zaman + 1;
if (zaman >= 100)
{
stepx = stepx * 1.01;
stepy = stepy * 1.01;
stepzarf = stepzarf * 1.01;
zaman = 0;
}




if ((keymove == -1) && (zarf.X1 > 0) || (keymove == 1) && (zarf.X2 < this.Width - 100))
{
zarf.X1 = Convert.ToInt32(zarf.X1 + stepzarf * keymove);
zarf.X2 = Convert.ToInt32(zarf.X2 + stepzarf * keymove);
}


toop.Left = Convert.ToInt32(toop.Left + stepx);
toop.Top = Convert.ToInt32(toop.Top + stepy);


if (toop.Top <= 0)
{
stepy = -stepy;
}


if (toop.Left <= 0 || toop.Left >= (this.Width - toop.Width))
{
stepx = -stepx;
}


if ((toop.Top + toop.Height) > zarf.Y1)
{
if ((toop.Left + toop.Width / 2) > zarf.X1 && (toop.Left + toop.Width / 2) < zarf.X2)
{
stepy = -stepy;
}


else
{

TMove.Enabled = false;
DialogResult result;
MessageBox.Show("آیا مایل به ادامه بازی هستید ؟", "!!! Game Over !!!", MessageBoxButtons.OKCancel);

if ( result == DialogResult.Yes)
{
stepx = 50;
stepy = -50;
stepzarf = 100;
keymove = 0;
toop.Top = 500;
LScore.Text = "0";
TMove.Enabled = true;
}
if (result == DialogResult.No)
{
this.Close();
}
}
}
}






}
}



سورس اصلی


Dim StepX, StepY, StepZarf As Double
Dim KeyMove, Zaman As Integer
Private Sub CmdReset_Click()
StepX = 50
StepY = -50
StepZarf = 100
KeyMove = 0
Toop.Top = 500
CmdReset.Visible = False
LScore.Caption = "0"
TMove.Enabled = True
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 37 Then
KeyMove = -1
End If
If KeyCode = 39 Then
KeyMove = 1
End If
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 37 Or KeyCode = 39 Then
KeyMove = 0
End If
End Sub
Private Sub Form_Load()
StepX = 50
StepY = -50
StepZarf = 100
End Sub






Private Sub TMove_Timer()
Zaman = Zaman + 1
If Zaman >= 100 Then
LScore.Caption = LScore.Caption * 1 + 1
StepX = StepX * 1.01
StepY = StepY * 1.01
StepZarf = StepZarf * 1.01
Zaman = 0
End If
If ((KeyMove = -1 And Zarf.X1 > 100) Or (KeyMove = 1 And Zarf.X2 < (Me.Width - 100))) Then
Zarf.X1 = Zarf.X1 + StepZarf * KeyMove
Zarf.X2 = Zarf.X2 + StepZarf * KeyMove
End If
Toop.Left = Toop.Left + StepX
Toop.Top = Toop.Top + StepY
If Toop.Top <= 0 Then
StepY = -StepY
End If
If Toop.Left <= 0 Or Toop.Left >= (Me.Width - Toop.Width) Then
StepX = -StepX
End If
If (Toop.Top + Toop.Height) > Zarf.Y1 Then
If (Toop.Left + Toop.Width / 2) > Zarf.X1 And (Toop.Left + Toop.Width / 2) < Zarf.X2 Then
StepY = -StepY
Else
CmdReset.Visible = True
TMove.Enabled = False
MsgBox (" !!! Game Over !!! ")
End If
End If
End Sub

mani007
چهارشنبه 20 اردیبهشت 1396, 00:02 صبح
واقعا سوال سختیه ؟

145187