c语言游戏编程题经典100例打靶编程c语⾔,C++编写简单的打靶游戏#define GDIPVER 0x0110
#define WIN32_LEAN_AND_MEAN
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "resource.h"
#include
#pragma comment(lib, "winmm.lib")
#pragma comment(lib,"GdiPlus.lib")
using namespace Gdiplus;
#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 600
static int cxball,cyball;
VOID OnPaint(HDC hDC,int x,int y)
{
Graphics _g(hDC);
//构造画笔
Pen _p(
Color::Red, //颜⾊
2.0F); //笔宽(默认:1.0F)
_g.DrawEllipse(&_p,x, y, 50, 50);
//设置笔宽与颜⾊
_p.SetColor(Color(255,111,222,55)); //设置颜⾊
_p.SetWidth(3.0F);//设置笔宽
//获得笔宽与颜⾊
Color _c;_p.GetColor(&_c);//获取颜⾊
REAL _r = _p.GetWidth();//获取笔宽
}
LRESULT CALLBACK WinProc(HWND hWnd,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{
static PMSG pmsg;
switch(msg)
{
PAINTSTRUCT ps ;
HDC hDC;
static int cxClient, cyClient ;
static int cxcreat,cycreat;
static int times,score;
TCHAR szText[256];
case WM_CREATE:
{
hDC = GetDC(hWnd);
PlaySound(MAKEINTRESOURCE(IDR_WAVE1), hinstance_app, SND_RESOURCE | SND_ASYNC); times = 9;
score = 0;
ReleaseDC(hWnd,hDC);
return(0);
} break;
case WM_SIZE:
{
cxClient = LOWORD (lparam) ;
cyClient = HIWORD (lparam) ;
return 0 ;
}
break;
case WM_LBUTTONDOWN :
{
switch (wparam)
{
case MK_LBUTTON:
hDC = GetDC(hWnd);
sprintf(szText,"得分为 %d",score);
TextOut(hDC,900,240,szText,10);
times--;
sprintf(szText,"次数为 %d",times);
TextOut(hDC,900,280,szText,8);
cxcreat = (int)LOWORD( lparam ) ; //获取⿏标位置x坐标信息
cycreat = (int)HIWORD( lparam ) ; //获取⿏标位置y坐标信息
SetBkMode(hDC, OPAQUE);
if(cxcreat>cxball-50&&cxcreat
{
if(cycreat>cyball-50&&cycreat
{
score+=100;
}
}
if(times <= 0)
{
score = 0;
times = 0;
MessageBox(hWnd,TEXT("次数超过了"),TEXT("错误"),MB_ICONERROR); }
ReleaseDC(hWnd,hDC);
break;
}
return 0;
}
break;
case WM_PAINT:
{
hDC = BeginPaint(hWnd,&ps);
MoveToEx(hDC,800,0,NULL);
LineTo(hDC,800,600);
MoveToEx(hDC,0,600,NULL);
LineTo(hDC,800,600);
EndPaint(hWnd,&ps);
return(0);
} break;
case WM_DESTROY:
{
PlaySound(NULL, hinstance_app, SND_PURGE);
PostQuitMessage(0);
return(0);
} break;
default:break;
}
return (DefWindowProc(hWnd, msg, wparam, lparam));
}
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{
HWND hwnd;
ULONG_PTR GdiplusToken;
GdiplusStartupInput GdiplusStartupInput;
Status sResult = GdiplusStartup(&GdiplusToken, &GdiplusStartupInput, NULL); if(sResult != Ok)return 0;
WNDCLASSEX WndClassEx =
{
sizeof(WNDCLASSEX),
CS_HREDRAW | CS_VREDRAW,
WinProc,
0L,
0L,
GetModuleHandle(NULL),
LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1)),
LoadCursor(hInst, MAKEINTRESOURCE(IDC_CURSOR1)),
(HBRUSH)GetStockObject(WHITE_BRUSH), NULL,
_T("SimpleWindowClass"),
LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1)) };
RegisterClassEx(&WndClassEx);
hwnd = CreateWindow(
_T("SimpleWindowClass"),
_T("pan's game ~~"),
WS_OVERLAPPEDWINDOW| WS_VSCROLL,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
GetDesktopWindow(),
NULL,
WndClassEx.hInstance,
NULL);
ShowWindow(hwnd, SW_SHOWDEFAULT); UpdateWindow(hwnd);
HDC hdc;
hdc = GetDC(hwnd);
srand(GetTickCount());
cxball = WINDOW_WIDTH/2;
cyball = WINDOW_HEIGHT/2;
RECT rect;
rect.left=0;
rect.bottom=600;
rect.right=800;
int xv = -4+rand()%8;
int yv = -4+rand()%8;
MSG Msg;
do