ورود

View Full Version : حرکت توپ ؟



nice_boy_a
چهارشنبه 23 آذر 1390, 21:29 عصر
سلام.
چند تا برنامه با ویژوال C++ میخواستم .گشتم ولی چیزی که مدنظرم باشه رو پیدا نکردم
از دوستان اگه کسی لینکی سراغ داره یا برنامه سراغ داره ممنونش میشم واسم بزاره
1) یه برنامه که توپ تو صفحه حرکت کنه( با برخورد به کناره ها از فرم بیرون نرود)
2) رسم اشکال هندسی (مثلا رسم یه خونه ساده)

یه سوال دیگه میشه شکل رسم شده رو دوران داد؟ مثلا خونه رو 50 درجه چرخوند؟

تشکر

ASGGSA
چهارشنبه 21 دی 1390, 20:15 عصر
سلام.
چند تا برنامه با ویژوال C++‎‎‎‎ میخواستم .گشتم ولی چیزی که مدنظرم باشه رو پیدا نکردم
از دوستان اگه کسی لینکی سراغ داره یا برنامه سراغ داره ممنونش میشم واسم بزاره
1) یه برنامه که توپ تو صفحه حرکت کنه( با برخورد به کناره ها از فرم بیرون نرود)

تشکر


سلام :
شما يه برنامه Win32 بسازيد و تابع WndProc رو بصورت زير تغيير بديد. :خجالت:شرمنده من قبلا اين برنامه رو نوشته بودم الان وقت توضيح دادن در مورد اونا ندارم!:متفکر:


LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
staticint x = 20, y = 20;
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_SHOWWINDOW:
SetTimer(hWnd, 1, 10, NULL);
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
HDC hdc1;
HBITMAP hbm1, hbm2;
HBRUSH hbr1, hbr2;
HPEN hpe1, hpe2;
hdc1 = CreateCompatibleDC(hdc);
hbm1 = CreateCompatibleBitmap(hdc, 400, 200);
hbm2 = (HBITMAP)SelectObject(hdc1, hbm1);
SetBkMode(hdc1, TRANSPARENT);
hbr1 = CreateSolidBrush(RGB(0, 255, 0));
hbr2 = (HBRUSH)SelectObject(hdc1, hbr1);
hpe1 = CreatePen(0, 10, RGB(0, 0, 255));
hpe2 = (HPEN)SelectObject(hdc1, hpe1);
Rectangle(hdc1, 0, 0, 400, 200);
hbr1 = CreateSolidBrush(RGB(255, 0, 0));
hbr2 = (HBRUSH)SelectObject(hdc1, hbr1);
hpe1 = CreatePen(0, 1, RGB(0, 0, 0));
hpe2 = (HPEN)SelectObject(hdc1, hpe1);
Ellipse(hdc1, x, y, 30 + x, 30 + y);
StretchBlt(hdc, 200, 150, 400, 200, hdc1, 0, 0, 400, 200, SRCCOPY);
DeleteDC(hdc1);
DeleteObject(hbm1);
DeleteObject(hbm2);
DeleteObject(hbr1);
DeleteObject(hbr2);
DeleteObject(hpe1);
DeleteObject(hpe2);
EndPaint(hWnd, &ps);
break;
case WM_TIMER:
if(wParam == 1)
{
int random = rand();
staticint add_x = 1, add_y = 0, direction = 0;
if(random > 0 && random < 100)
direction = 0;
elseif(random > 100 && random < 300)
direction = 1;
elseif(random > 300 && random < 400)
direction = 2;
elseif(random > 300 && random < 600)
{
if(add_x)
{
add_x = 0;
add_y = 1;
}
elseif(add_y)
{
add_x = 1;
add_y = 0;
}
}
if(x > 365)
{
x = 365;
if(direction == 0)
{
add_x = -1;
add_y = 0;
}
elseif(direction == 1)
{
add_x = 0;
add_y = 1;
}
elseif(direction == 2)
{
add_x = 0;
add_y = -1;
}
}
if(x < 5)
{
x = 5;
if(direction == 0)
{
add_x = 1;
add_y = 0;
}
elseif(direction == 1)
{
add_x = 0;
add_y = 1;
}
elseif(direction == 2)
{
add_x = 0;
add_y = -1;
}
}
if(y < 5)
{
y = 5;
if(direction == 0)
{
add_x = 1;
add_y = 0;
}
elseif(direction == 1)
{
add_x = -1;
add_y = 0;
}
elseif(direction == 2)
{
add_x = 0;
add_y = 1;
}
}
if(y > 165)
{
y = 165;
if(direction == 0)
{
add_x = 1;
add_y = 0;
}
elseif(direction == 1)
{
add_x = -1;
add_y = 0;
}
elseif(direction == 2)
{
add_x = 0;
add_y = -1;
}
}
x += add_x;
y += add_y;
InvalidateRect(hWnd, NULL, FALSE);
}
break;
case WM_DESTROY:
KillTimer(hWnd, 1);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

حامد مصافی
چهارشنبه 21 دی 1390, 22:02 عصر
دوست عزیز، بعد از قریب به 60 پست باید فهمیده باشید اینجاد درخواست پروژه ممنوعه