大一暑假结果-俄罗斯方块
//记得用多字符
#include<iostream>
#include<conio.h>
#include<time.h>
#include<string>
#include<windows.h>
#include<mmreg.h>
#include<mmsystem.h>
#include<stdlib.h>
using namespace std;
#define IDB_ONE
#define Width 20
#define High 26
#define YIGE 20
#define E_NEWBLOCK WM_USER+1
#define E_DRAW WM_USER+2
#define E_NEXTBLOCK WM_USER+3
#pragma comment(lib,"winmm.lib")
static int Top, sel, Fg, sel1;
static int state = 0, b = 1;
//static int b = 1;
HWND hwnd;
HDC mdc, hdc;
int score; int len; int n = 1;
char ch[256];
static int ShowKUAI[4][2], KUAI[4][2], SNextKUAI[4][2], NextKUAI[4][2];
static bool pauseFlag = false;
static int key = 1;
void HiGame(HWND);
void StopGame(HWND);
void StartP(HDC);
void Sweep(HWND);
HDC m_hdc;
HFONT hfont;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
static char AppName[] = "Tetris俄罗斯方块";
MSG msg;
msg.message = 0;
WNDCLASSEX wndclass;
int iScreenWide;
wndclass.cbSize = sizeof(wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = AppName;
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if (!RegisterClassEx(&wndclass))
{
MessageBeep(0);
return FALSE;
}
iScreenWide = GetSystemMetrics(SM_CXFULLSCREEN);
hwnd = CreateWindow(
AppName,
"俄罗斯方块",
WS_MINIMIZEBOX | WS_SYSMENU,
0,
0,
600,
520,
NULL,
NULL,
hInstance,
NULL
);
if (!hwnd)
return FALSE;
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
SendMessage(hwnd, E_NEWBLOCK, 0, 0);
SetTimer(hwnd, 1, 300, NULL);
while (msg.message != WM_QUIT)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
if (!state)
{
hdc = GetDC(hwnd);
m_hdc = CreateCompatibleDC(hdc);
state = 1;
Sleep(200);
}
else if (state == 1)
{
if (b)
{
Sweep(hwnd);
InvalidateRect(hwnd, NULL, TRUE);
KillTimer(hwnd, 1);
b = 0;
}
}
}
}
return msg.wParam;
}
void DrawRect(HDC hdc, int l, int t, int r, int b)
{
MoveToEx(hdc, l, t, NULL);
LineTo(hdc, r, t);
LineTo(hdc, r, b);
LineTo(hdc, l, b);
LineTo(hdc, l, t);
}
class Colour
{
public:
Colour(int, int, int);
HBRUSH hhBru;
HBRUSH visithhBru()
{
return hhBru;
};
private:
int a1, b1, c1;
};
Colour::Colour(int a, int b, int c)
{
a1 = a; b1 = b; c1 = c;
hhBru = CreateSolidBrush(RGB(a1, b1, c1));
}
void DrawCell(HDC hdc, int l, int t, int r, int b)
{
Colour B1(255, 2, 255), B2(8, 92, 255), B3(96, 113, 223), B4(34, 126, 255), B5(172, 108, 2);
HBRUSH hBru, hBru1, hBru2, hBru3, hBru4;
hBru = B1.visithhBru();
hBru1 = B2.visithhBru();
hBru2 = B3.visithhBru();
hBru3 = B4.visithhBru();
hBru4 = B5.visithhBru();
//hBru = CreateSolidBrush(RGB(255, 2, 255)); //紫色
//hBru1 = CreateSolidBrush(RGB(8, 92, 255));
//hBru2 = CreateSolidBrush(RGB(96, 113, 223));
//hBru3 = CreateSolidBrush(RGB(34, 126, 255));
//hBru4 = CreateSolidBrush(RGB(172, 108, 2)); //zongse
switch (sel1)
{
case 0:
SelectObject(hdc, hBru);
Rectangle(hdc, l, t, r, b);
break;
case 1:
SelectObject(hdc, hBru1);
Rectangle(hdc, l, t, r, b);
break;
case 2:
SelectObject(hdc, hBru2);
Rectangle(hdc, l, t, r, b);
break;
case 3:
SelectObject(hdc, hBru2);
Rectangle(hdc, l, t, r, b);
break;
case 4:
SelectObject(hdc, hBru3);
Rectangle(hdc, l, t, r, b);
break;
case 5:
SelectObject(hdc, hBru3);
Rectangle(hdc, l, t, r, b);
break;
case 6:
SelectObject(hdc, hBru4);
Rectangle(hdc, l, t, r, b);
break;
}
DeleteObject(hBru);
DeleteObject(hBru1);
DeleteObject(hBru2);
DeleteObject(hBru3);
DeleteObject(hBru4);
}
void DrawGamePlace(HDC hdc)
{
if (key)
{
StartP(hdc);
}
else {
int i, j;
HPEN hpen1;
hpen1 = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));
MoveToEx(hdc, (Width - 8) * YIGE, 0, NULL);
LineTo(hdc, (Width - 8) * YIGE, (High - 2) * YIGE);
SelectObject(hdc, hpen1);
for (i = 1; i < High - 1; i++)
for (j = 1; j <= Width - 8; j++)
DrawRect(hdc, (j - 1) * YIGE, (i - 1) * YIGE, j * YIGE, i * YIGE);
for (i = 5; i < 9; i++)
for (j = Width - 5; j < Width - 1; j++)
DrawRect(hdc, (j - 1) * YIGE, (i - 1) * YIGE, j * YIGE, i * YIGE);
DeleteObject(hpen1);
}
}
void DrawBlock(HDC hdc, int block[4][2])
{
int i;
for (i = 0; i < 4; i++)
DrawCell(hdc, (block[i][0] - 1) * YIGE, (block[i][1] - 1) * YIGE, block[i][0] * YIGE, block[i][1] * YIGE);
}
void Cover(HDC hdc, int Zhanshi[4][2])
{
int i;
HBRUSH hBru;
DrawGamePlace(hdc);
hBru = (HBRUSH)GetStockObject(BLACK_BRUSH);
SelectObject(hdc, hBru);
for (i = 0; i < 4; i++)
Rectangle(hdc, (Zhanshi[i][0] - 1) * YIGE, (Zhanshi[i][1] - 1) * YIGE, Zhanshi[i][0] * YIGE, Zhanshi[i][1] * YIGE);
DeleteObject(hBru);
}
void StopGame(HWND hwnd)
{
KillTimer(hwnd, 1);
MessageBox(hwnd, " 游戏暂停\n\n 再次按下空格开始", "提示", MB_OK);
}
void HiGame(HWND hwnd)
{
if (score <= 500)
SetTimer(hwnd, 1, 300, NULL);
else if (score <= 1000)
SetTimer(hwnd, 1, 200, NULL);
else
SetTimer(hwnd, 1, 50, NULL);
}
void Sweep(HWND hwnd)
{
ReleaseDC(hwnd, hdc);
DeleteObject(hfont);
DeleteObject(m_hdc);
}
void StartP(HDC hdc)
{
TextOut(hdc, 240, 200, "俄罗斯方块", lstrlen("俄罗斯方块"));
TextOut(hdc, 230, 230, "按下Enter进入游戏", lstrlen("按下Enter进入游戏"));
}
LRESULT CALLBACK WndProc(HWND hwnd,
UINT iMsg,
WPARAM wParam,
LPARAM lParam)
{
int i, j, k, lines, r;
static int CLS[Width - 7][High];
HPEN hpen;
PAINTSTRUCT ps;
switch (iMsg)
{
case WM_CREATE:
Top = High - 1;
for (i = 0; i < High; i++)
{
CLS[0][i] = 1;
CLS[Width - 7][i] = 1;
}
for (i = 0; i < Width - 7; i++)
{
CLS[i][High - 1] = 1;
}
for (i = 1; i <= Width - 8; i++)
{
for (j = 0; j < High - 1; j++)
CLS[i][j] = 0;
}
return 0;
case E_NEWBLOCK:
Fg = 0;
if (score >= 500)
{
KillTimer(hwnd, 1);
SetTimer(hwnd, 1, 200, NULL);
}
if (score >= 1000)
{
KillTimer(hwnd, 1);
SetTimer(hwnd, 1, 100, NULL);
}
for (i = Top; i < High - 1; i++)
{
lines = 1;
for (j = 1; j <= Width - 7; j++)
if (!CLS[j][i])
{
lines = 0;
break;
}
if (lines)
{
score += 100;
for (j = 1; j < Width - 7; j++)
for (k = i; k > 0; k--)
{
CLS[j][k] = CLS[j][k - 1];
}
Top++;
InvalidateRect(hwnd, NULL, TRUE);
}
}
if (n)
{
sel1 = 0;
n = 0;
ShowKUAI[0][0] = KUAI[0][0] = 5; ShowKUAI[0][1] = KUAI[0][1] = 0;
ShowKUAI[1][0] = KUAI[1][0] = 6; ShowKUAI[1][1] = KUAI[1][1] = 0;
ShowKUAI[2][0] = KUAI[2][0] = 5; ShowKUAI[2][1] = KUAI[2][1] = 1;
ShowKUAI[3][0] = KUAI[3][0] = 6; ShowKUAI[3][1] = KUAI[3][1] = 1;
}
else
{
sel1 = sel;
ShowKUAI[0][0] = KUAI[0][0] = NextKUAI[0][0]; ShowKUAI[0][1] = KUAI[0][1] = NextKUAI[0][1];
ShowKUAI[1][0] = KUAI[1][0] = NextKUAI[1][0]; ShowKUAI[1][1] = KUAI[1][1] = NextKUAI[1][1];
ShowKUAI[2][0] = KUAI[2][0] = NextKUAI[2][0]; ShowKUAI[2][1] = KUAI[2][1] = NextKUAI[2][1];
ShowKUAI[3][0] = KUAI[3][0] = NextKUAI[3][0]; ShowKUAI[3][1] = KUAI[3][1] = NextKUAI[3][1];
}
srand((unsigned)time(NULL));
sel = rand() % 7;
switch (sel)
{
case 0:
// 田字
NextKUAI[0][0] = 5; NextKUAI[0][1] = 0;
NextKUAI[1][0] = 6; NextKUAI[1][1] = 0;
NextKUAI[2][0] = 5; NextKUAI[2][1] = 1;
NextKUAI[3][0] = 6; NextKUAI[3][1] = 1;
for (i = 0; i < 4; i++)
{
SNextKUAI[i][0] = NextKUAI[i][0] + 11;
SNextKUAI[i][1] = NextKUAI[i][1] + 5;
}
break;
case 1:
//横杆
NextKUAI[0][0] = 4; NextKUAI[0][1] = 0;
NextKUAI[1][0] = 5; NextKUAI[1][1] = 0;
NextKUAI[2][0] = 6; NextKUAI[2][1] = 0;
NextKUAI[3][0] = 7; NextKUAI[3][1] = 0;
for (i = 0; i < 4; i++)
{
SNextKUAI[i][0] = NextKUAI[i][0] + 11;
SNextKUAI[i][1] = NextKUAI[i][1] + 5;
}
break;
case 2:
//左上右下
NextKUAI[0][0] = 5; NextKUAI[0][1] = 0;
NextKUAI[1][0] = 5; NextKUAI[1][1] = 1;
NextKUAI[2][0] = 6; NextKUAI[2][1] = 1;
NextKUAI[3][0] = 6; NextKUAI[3][1] = 2;
for (i = 0; i < 4; i++)
{
SNextKUAI[i][0] = NextKUAI[i][0] + 11;
SNextKUAI[i][1] = NextKUAI[i][1] + 5;
}
break;
case 3:
// 右上左下
NextKUAI[0][0] = 6; NextKUAI[0][1] = 0;
NextKUAI[1][0] = 6; NextKUAI[1][1] = 1;
NextKUAI[2][0] = 5; NextKUAI[2][1] = 1;
NextKUAI[3][0] = 5; NextKUAI[3][1] = 2;
for (i = 0; i < 4; i++)
{
SNextKUAI[i][0] = NextKUAI[i][0] + 11;
SNextKUAI[i][1] = NextKUAI[i][1] + 5;
}
break;
case 4:
//向右朝向的L
NextKUAI[0][0] = 5; NextKUAI[0][1] = 0;
NextKUAI[1][0] = 5; NextKUAI[1][1] = 1;
NextKUAI[2][0] = 5; NextKUAI[2][1] = 2;
NextKUAI[3][0] = 6; NextKUAI[3][1] = 2;
for (i = 0; i < 4; i++)
{
SNextKUAI[i][0] = NextKUAI[i][0] + 11;
SNextKUAI[i][1] = NextKUAI[i][1] + 5;
}
break;
case 5:
// 向左朝向的L
NextKUAI[0][0] = 5; NextKUAI[0][1] = 0;
NextKUAI[1][0] = 5; NextKUAI[1][1] = 1;
NextKUAI[2][0] = 5; NextKUAI[2][1] = 2;
NextKUAI[3][0] = 4; NextKUAI[3][1] = 2;
for (i = 0; i < 4; i++)
{
SNextKUAI[i][0] = NextKUAI[i][0] + 11;
SNextKUAI[i][1] = NextKUAI[i][1] + 5;
}
break;
case 6:
// 土字
NextKUAI[0][0] = 5; NextKUAI[0][1] = 0;
NextKUAI[1][0] = 4; NextKUAI[1][1] = 1;
NextKUAI[2][0] = 5; NextKUAI[2][1] = 1;
NextKUAI[3][0] = 6; NextKUAI[3][1] = 1;
for (i = 0; i < 4; i++)
{
SNextKUAI[i][0] = NextKUAI[i][0] + 11;
SNextKUAI[i][1] = NextKUAI[i][1] + 5;
}
SendMessage(hwnd, E_NEXTBLOCK, 0, 0);
break;
default:
SendMessage(hwnd, E_NEWBLOCK, 0, 0);
SendMessage(hwnd, E_NEXTBLOCK, 0, 0);
break;
}
return 0;
case WM_TIMER:
if (!state)
break;
for (i = 0; i < 4; i++)
KUAI[i][1]++;
for (i = 0; i < 4; i++)
if (CLS[KUAI[i][0]][KUAI[i][1]])
{
SendMessage(hwnd, E_NEXTBLOCK, 0, 0);
for (i = 0; i < 4; i++)
CLS[ShowKUAI[i][0]][ShowKUAI[i][1]] = 1;
if (Top > ShowKUAI[0][1] - 2)
Top = ShowKUAI[0][1] - 2;
if (Top < 0)
{
PlaySound(NULL, NULL, SND_ASYNC | SND_FILENAME);
KillTimer(hwnd, 1);
MessageBox(hwnd, "游戏结束", "退出", MB_OK);
PostQuitMessage(0);
}
SendMessage(hwnd, E_NEWBLOCK, 0, 0);
return 0;
}
SendMessage(hwnd, E_DRAW, 0, 0);
return 0;
case WM_KEYDOWN:
r = 0;
switch ((int)wParam)
{
case VK_LEFT:
if (pauseFlag)
break;
for (i = 0; i < 4; i++)
KUAI[i][0]--;
break;
case VK_RIGHT:
if (pauseFlag)
break;
for (i = 0; i < 4; i++)
KUAI[i][0]++;
break;
case VK_DOWN:
if (pauseFlag)
break;
for (i = 0; i < 4; i++)
KUAI[i][1]++;
break;
case VK_SPACE:
pauseFlag = !pauseFlag;
if (pauseFlag == true)
{
StopGame(hwnd);
break;
}
else {
HiGame(hwnd);
break;
}
case VK_ESCAPE:
{
PlaySound(NULL, NULL, SND_ASYNC | SND_FILENAME);
KillTimer(hwnd, 1);
MessageBox(hwnd, "游戏结束", "退出", MB_OK);
PostQuitMessage(0);
}
case VK_RETURN:
key = 0;
InvalidateRect(hwnd, NULL, TRUE);
SetTimer(hwnd, 1, 300, NULL);
case VK_UP:
if (pauseFlag)
break;
r = 1;
Fg++;
switch (sel1)
{
case 0:
break;
//横变成竖
case 1:
Fg = Fg % 2;
for (i = 0; i < 4; i++)
{
KUAI[i][(Fg + 1) % 2] = ShowKUAI[2][(Fg + 1) % 2];
KUAI[i][Fg] = ShowKUAI[2][Fg] - 2 + i;
}
break;
//左上右下顺时针90°
case 2:
Fg = Fg % 2;
if (Fg)
{
KUAI[0][1] += 2; KUAI[3][0] -= 2;
}
else
{
KUAI[0][1] -= 2; KUAI[3][0] += 2;
}
break;
// 左下右上顺时针90°
case 3:
Fg = Fg % 2;
if (Fg)
{
KUAI[0][1] += 2; KUAI[3][0] += 2;
}
else
{
KUAI[0][1] -= 2; KUAI[3][0] -= 2;
}
break;
// L顺时针旋转
case 4:
Fg = Fg % 4;
switch (Fg)
{
case 0:
KUAI[2][0] += 2; KUAI[3][0] += 2;
KUAI[2][1] += 1; KUAI[3][1] += 1;
break;
case 1:
KUAI[2][0] += 1; KUAI[3][0] += 1;
KUAI[2][1] -= 2; KUAI[3][1] -= 2;
break;
case 2:
KUAI[2][0] -= 2; KUAI[3][0] -= 2;
KUAI[2][1] -= 1; KUAI[3][1] -= 1;
break;
case 3:
KUAI[2][0] -= 1; KUAI[3][0] -= 1;
KUAI[2][1] += 2; KUAI[3][1] += 2;
break;
}
break;
// 左L顺时针旋转
case 5:
Fg = Fg % 4;
switch (Fg)
{
case 0:
KUAI[2][0] += 1; KUAI[3][0] += 1;
KUAI[2][1] += 2; KUAI[3][1] += 2;
break;
case 1:
KUAI[2][0] += 2; KUAI[3][0] += 2;
KUAI[2][1] -= 1; KUAI[3][1] -= 1;
break;
case 2:
KUAI[2][0] -= 1; KUAI[3][0] -= 1;
KUAI[2][1] -= 2; KUAI[3][1] -= 2;
break;
case 3:
KUAI[2][0] -= 2; KUAI[3][0] -= 2;
KUAI[2][1] += 1; KUAI[3][1] += 1;
break;
}
break;
case 6:
// 土顺时针旋转90°
Fg = Fg % 4;
switch (Fg)
{
case 0:
KUAI[0][0]++; KUAI[0][1]--;
KUAI[1][0]--; KUAI[1][1]--;
KUAI[3][0]++; KUAI[3][1]++;
break;
case 1:
KUAI[1][0]++; KUAI[1][1]++; break;
case 2:
KUAI[0][0]--; KUAI[0][1]++; break;
case 3:
KUAI[3][0]--; KUAI[3][1]--; break;
}
break;
}
break;
}
for (i = 0; i < 4; i++)
if (CLS[KUAI[i][0]][KUAI[i][1]])
{
if (r) Fg += 3;
{
for (i = 0; i < 4; i++)
{
for (j = 0; j < 2; j++)
KUAI[i][j] = ShowKUAI[i][j];
}
}
return 0;
}
SendMessage(hwnd, E_DRAW, 0, 0);;
return 0;
case E_NEXTBLOCK:
hdc = GetDC(hwnd);
Cover(hdc, SNextKUAI);
return 0;
case E_DRAW:
hdc = GetDC(hwnd);
Cover(hdc, ShowKUAI);
DrawBlock(hdc, SNextKUAI);
for (i = 0; i < 4; i++)
{
for (j = 0; j < 2; j++)
{
ShowKUAI[i][j] = KUAI[i][j];
}
}
DrawBlock(hdc, ShowKUAI);
ReleaseDC(hwnd, hdc);
return 0;
case WM_PAINT:
len = wsprintf(ch, "Score:%d", score);
hdc = BeginPaint(hwnd, &ps);
DrawGamePlace(hdc);
if (key != 1)
{
//TextOut(hdc, 15 * YIGE, 12 * YIGE, "Score", lstrlen("Score"));
TextOut(hdc, 15 * YIGE, 13 * YIGE, ch, len);
TextOut(hdc, 15 * YIGE, 15 * YIGE, "Level: ", lstrlen("Level: "));
if (score <= 500)
TextOut(hdc, 18 * YIGE, 15 * YIGE, "简单", lstrlen("简单"));
else if (score <= 1000)
TextOut(hdc, 18 * YIGE, 15 * YIGE, "中等", lstrlen("中等"));
else
TextOut(hdc, 18 * YIGE, 15 * YIGE, "困难", lstrlen("困难"));
}
hpen = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));
SelectObject(hdc, hpen);
for (i = 0; i < High - 1; i++)
{
for (j = 1; j <= Width - 8; j++)
{
if (CLS[j][i])
DrawCell(hdc, (j - 1) * YIGE, (i - 1) * YIGE, j * YIGE, i * YIGE);
}
}
DeleteObject(hpen);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
Sweep(hwnd);
KillTimer(hwnd, 1);
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
大一暑假结果-俄罗斯方块相关推荐
- 好家伙!清华电子系大一暑假Python课程大作业上知乎热榜!竟是个CV任务
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 编辑:Amusi | 来源:知乎 https://www.zhihu.com/question/4719 ...
- 【贪玩巴斯】大一暑假自学Linux笔记记录Day4 //纯新手入门基于ubantu
大家好,我是巴斯,一个平平无奇的大一学生,利用暑假的日子,在家自学Linux,想着发博客来记录,欢迎大家对博客内容提出建议和交流.***B站看的黑马程序员的视频 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 今天的内 ...
- 关于一个大一学生的俄罗斯方块项目分享C#开发,附源码(一)
本人为一双非大一计科新生,这是我第一篇文章,能力一般,水平有限,能在各位大佬面前弄斧,不胜荣幸. 事情是这样的: 我寒假买了一个3ds掌机,玩了里面很多游戏,其中最令我着迷的就是俄罗斯方块.说实话以前 ...
- 计算机专业大一暑假,2020年计算机专业大学生暑期社会实践调查报告
<2020年计算机专业大学生暑期社会实践调查报告>由会员分享,可在线阅读,更多相关<2020年计算机专业大学生暑期社会实践调查报告(4页珍藏版)>请在人人文库网上搜索. 1.2 ...
- 关于大一暑假考核的复习总结
文章目录 内容概述 一.电机的转动 1.tb6612电机驱动模块 2.代码举例 二.其他功能 1.通过红外遥控控制PWM值 2.避障模块 总结 写在最后 内容概述 暑期我们进行了实验室的第三次考核,我 ...
- 关于一个大一学生的俄罗斯方块项目分享C#开发,附源码(四)
总流程 是最后一节捏! 由于我在讲解的时候的代码不全,我会把源码放在附录里(新人博主这么认真,点个关注吧!) 首先是关定时器和画棋盘 timer1.Enabled = false;DrawBoard( ...
- 关于一个大一学生的俄罗斯方块项目分享 C#开发,附源码(二)
关于下落对象 众所周知,俄罗斯方块有七种下落对象,根据形状,我先建了一个叫GO(gameobject)的枚举类型,内容是I.L.O.Z.T.tL.tZ(自行脑补形状,是不是很传神嘿嘿) public ...
- 关于一个大一学生的俄罗斯方块项目分享C#开发,附源码(三)
关于边界碰撞和方块碰撞 完成了下落对象基本的移动和旋转还不够,在很多情况下下落对象是不能移动和旋转的. 第一种情况,我们不能让对象超出边界 第二种情况,在周围存在已经固定的方块时,我们不能让对象和这些 ...
- 大一暑假第三周学习体会
用例模型主要用于描述系统的行为/功能以及行为之间的关系.用例之间有三种关系:泛化关系.扩展关系.包含关系.泛化关系是指多个用例共同用于一种类似的结构和行为,将他们的共性抽象为父用例,其他用例为子用例( ...
最新文章
- Linux 下Oracle Client JAVA JDBC 集成点滴
- c#中Show和Showdialog的区别分析
- 53-C++ CH08 01
- NLP文本分类大杀器:PET范式
- Burp Suite 扫描工具
- 模糊控制 之 模糊集,隶属函数,模糊关系
- 使用IDA对ipa进行反编译
- 大秦帝国部:黑色裂变(上卷)读后感
- Python项目:学生管理系统(数据库)
- SparkSteaming整合Kafka的方式
- 面试官:怎么不用定时任务实现关闭订单?
- ecmall购物获积分功能 积分抵扣设置 积分购物
- 一个后端开发的 Vue 笔记【入门级】
- 洛谷P1233 木棍加工
- 洗衣店小程序,共享洗衣小程序,干洗店小程序毕设作品
- onnx 模型推理示例-Python 实现 |【onnx 模型推理】
- 云上办公兴起,华为云桌面Workspace更靠谱
- SourceTree导入产品证书
- 冯杰的手写艺术签名怎么写好看
- 华为/思科已知一个ip查对应mac和交换机接口