vc++6.0纹样代码

vc++6.0纹样代码

本次课程的最后成果
实现功能

  1. 画出条状菱形纹样
  2. 使用者以交互式窗口完成纹样的属性设定
  3. 纹样所示的所有属性,都可以由交互界面更改,包括:纹样重复周期、线条粗细、颜色、内部填充图案等。

效果图
两个纹样进行对比改变属性交互界面
在这里插入图片描述

void CWenyang3View::OnMenuitem32771() 
{
   
	// TODO: Add your command handler code here
	wy dlg1;
	int	button;
	CDC* pDC=GetDC( );
	button = dlg1.DoModal();
	CClientDC dc(this);
	if(button==IDOK)
	///向下的折线blue/	
		int b1=50*dlg1.m_nbeishu;
		int a=dlg1.m_nzhouqi+1;
		for(int i=1;i<a;i++)
	{
   
int p;
		for (p=0;p<30000000;p++){
   }
		CPen*	pNewPen1;
		pNewPen1=new CPen; //定义画笔
pNewPen1->CreatePen(PS_SOLID,dlg1.m_nD1,RGB(dlg1.m_nR1,dlg1.m_nG1,dlg1.m_nB1));
        pDC->SelectObject( pNewPen1 );
		CPoint point[50];
		point[0].x=dlg1.m_nx;//初始位置
		point[0].y=dlg1.m_ny;
		point[i].x=point[0].x+b1;//确定x坐标,x的坐标依照50递增
		b1=b1+50*dlg1.m_nbeishu;
		if (i%
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VC++ 6.0贪吃蛇代码可以通过以下步骤实现: 1. 创建一个Win32应用程序项目。 2. 在资源编辑器中创建一个对话框,用于显示游戏界面。 3. 在代码中实现贪吃蛇的逻辑,包括蛇的移动、食物的生成等。 4. 在对话框的WM_PAINT消息中绘制游戏界面,包括蛇、食物和障碍物等。 5. 在对话框的WM_KEYDOWN消息中响应键盘事件,控制蛇的移动方向。 6. 在对话框的WM_TIMER消息中更新游戏状态,实现游戏的运行。 以下是一个简单的VC++ 6.0贪吃蛇代码示例: ``` #include <windows.h> #include <time.h> #define ROWS 30 // 地图行数 #define COLS 40 // 地图列数 #define CELL_SIZE 20 // 每个格子的大小 #define WM_GAMEOVER (WM_USER + 1) // 游戏结束消息 int map[ROWS][COLS]; // 地图数组 int snake[ROWS * COLS]; // 蛇身数组 int food; // 食物坐标 int length; // 蛇身长度 int direction; // 蛇头方向 BOOL isGameOver; // 是否游戏结束 HWND hDlg; // 对话框句柄 void InitMap() // 初始化地图 { memset(map, 0, sizeof(map)); // 所有格子都设置为0 for (int i = 0; i < COLS; i++) { map[i] = map[ROWS - 1][i] = 1; // 上下两行设置为1,表示障碍物 } for (int i = 0; i < ROWS; i++) { map[i] = map[i][COLS - 1] = 1; // 左右两列设置为1,表示障碍物 } } void InitSnake() // 初始化蛇 { length = 3; // 初始长度为3 snake = ROWS / 2; snake = COLS / 2; // 初始位置为地图中心 snake = snake + 1; snake = snake; snake = snake + 2; snake = snake; } void InitFood() // 初始化食物 { srand((unsigned)time(NULL)); // 初始化随机数种子 do { food = rand() % ROWS; food = rand() % COLS; } while (map[food][food] != 0); // 食物不能出现在障碍物或蛇身上 } void DrawCell(HDC hdc, int row, int col, COLORREF color) // 绘制一个格子 { HBRUSH hBrush = CreateSolidBrush(color); HBRUSH hOldBrush = (HBRUSH)SelectObject(hdc, hBrush); Rectangle(hdc, col * CELL_SIZE, row * CELL_SIZE, (col + 1) * CELL_SIZE, (row + 1) * CELL_SIZE); SelectObject(hdc, hOldBrush); DeleteObject(hBrush); } void DrawMap(HDC hdc) // 绘制地图 { for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { if (map[i][j] == 1) { DrawCell(hdc, i, j, RGB(128, 128, 128)); // 障碍物 } else if (map[i][j] == 2) { DrawCell(hdc, i, j, RGB(255, 0, 0)); // 蛇头 } else if (map[i][j] == 3) { DrawCell(hdc, i, j, RGB(0, 255, 0)); // 蛇身 } else if (map[i][j] == 4) { DrawCell(hdc, i, j, RGB(255, 255, 0)); // 食物 } } } } void MoveSnake() // 移动蛇 { int row = snake[length - 1]; int col = snake[length - 1]; map[row][col] = 0; // 删除蛇尾 for (int i = length - 1; i >= 1; i--) { // 向前移动蛇身 snake[i] = snake[i - 1]; snake[i] = snake[i - 1]; map[snake[i][0]][snake[i]] = 3; } if (direction == VK_UP) { snake--; } else if (direction == VK_DOWN) { snake++; } else if (direction == VK_LEFT) { snake--; } else if (direction == VK_RIGHT) { snake++; } if (map[snake][snake] != 0) { // 撞到障碍物或自己身体 isGameOver = TRUE; return; } if (snake == food && snake == food) { // 吃到食物 length++; InitFood(); map[food][food] = 4; } map[snake][snake] = 2; // 更新蛇头位置 } void GameOver() // 游戏结束处理 { KillTimer(hDlg, 1); // 停止计时器 PostMessage(hDlg, WM_GAMEOVER, 0, 0); // 发送游戏结束消息 } LRESULT CALLBACK GameDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: hDlg = hwndDlg; InitMap(); InitSnake(); InitFood(); SetTimer(hwndDlg, 1, 200, NULL); // 设置计时器,每200ms更新一次游戏状态 return TRUE; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwndDlg, &ps); DrawMap(hdc); EndPaint(hwndDlg, &ps); return TRUE; } case WM_KEYDOWN: switch (wParam) { case VK_UP: case VK_DOWN: case VK_LEFT: case VK_RIGHT: direction = wParam; break; } return TRUE; case WM_TIMER: MoveSnake(); InvalidateRect(hwndDlg, NULL, FALSE); // 刷新对话框客户区 if (isGameOver) { GameOver(); } return TRUE; case WM_GAMEOVER: MessageBox(hwndDlg, TEXT("Game Over!"), TEXT("Notice"), MB_OK); EndDialog(hwndDlg, IDOK); return TRUE; case WM_CLOSE: EndDialog(hwndDlg, IDCANCEL); return TRUE; default: return FALSE; } } INT_PTR CALLBACK AboutDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: EndDialog(hwndDlg, IDOK); return TRUE; default: return FALSE; } default: return FALSE; } } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_GAME), NULL, GameDlgProc); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值