//记得用多字符
#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);
}

大一暑假结果-俄罗斯方块相关推荐

  1. 好家伙!清华电子系大一暑假Python课程大作业上知乎热榜!竟是个CV任务

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 编辑:Amusi  |  来源:知乎 https://www.zhihu.com/question/4719 ...

  2. 【贪玩巴斯】大一暑假自学Linux笔记记录Day4 //纯新手入门基于ubantu

    大家好,我是巴斯,一个平平无奇的大一学生,利用暑假的日子,在家自学Linux,想着发博客来记录,欢迎大家对博客内容提出建议和交流.***B站看的黑马程序员的视频 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 今天的内 ...

  3. 关于一个大一学生的俄罗斯方块项目分享C#开发,附源码(一)

    本人为一双非大一计科新生,这是我第一篇文章,能力一般,水平有限,能在各位大佬面前弄斧,不胜荣幸. 事情是这样的: 我寒假买了一个3ds掌机,玩了里面很多游戏,其中最令我着迷的就是俄罗斯方块.说实话以前 ...

  4. 计算机专业大一暑假,2020年计算机专业大学生暑期社会实践调查报告

    <2020年计算机专业大学生暑期社会实践调查报告>由会员分享,可在线阅读,更多相关<2020年计算机专业大学生暑期社会实践调查报告(4页珍藏版)>请在人人文库网上搜索. 1.2 ...

  5. 关于大一暑假考核的复习总结

    文章目录 内容概述 一.电机的转动 1.tb6612电机驱动模块 2.代码举例 二.其他功能 1.通过红外遥控控制PWM值 2.避障模块 总结 写在最后 内容概述 暑期我们进行了实验室的第三次考核,我 ...

  6. 关于一个大一学生的俄罗斯方块项目分享C#开发,附源码(四)

    总流程 是最后一节捏! 由于我在讲解的时候的代码不全,我会把源码放在附录里(新人博主这么认真,点个关注吧!) 首先是关定时器和画棋盘 timer1.Enabled = false;DrawBoard( ...

  7. 关于一个大一学生的俄罗斯方块项目分享 C#开发,附源码(二)

    关于下落对象 众所周知,俄罗斯方块有七种下落对象,根据形状,我先建了一个叫GO(gameobject)的枚举类型,内容是I.L.O.Z.T.tL.tZ(自行脑补形状,是不是很传神嘿嘿) public ...

  8. 关于一个大一学生的俄罗斯方块项目分享C#开发,附源码(三)

    关于边界碰撞和方块碰撞 完成了下落对象基本的移动和旋转还不够,在很多情况下下落对象是不能移动和旋转的. 第一种情况,我们不能让对象超出边界 第二种情况,在周围存在已经固定的方块时,我们不能让对象和这些 ...

  9. 大一暑假第三周学习体会

    用例模型主要用于描述系统的行为/功能以及行为之间的关系.用例之间有三种关系:泛化关系.扩展关系.包含关系.泛化关系是指多个用例共同用于一种类似的结构和行为,将他们的共性抽象为父用例,其他用例为子用例( ...

最新文章

  1. Linux 下Oracle Client JAVA JDBC 集成点滴
  2. c#中Show和Showdialog的区别分析
  3. 53-C++ CH08 01
  4. NLP文本分类大杀器:PET范式
  5. Burp Suite 扫描工具
  6. 模糊控制 之 模糊集,隶属函数,模糊关系
  7. 使用IDA对ipa进行反编译
  8. 大秦帝国部:黑色裂变(上卷)读后感
  9. Python项目:学生管理系统(数据库)
  10. SparkSteaming整合Kafka的方式
  11. 面试官:怎么不用定时任务实现关闭订单?
  12. ecmall购物获积分功能 积分抵扣设置 积分购物
  13. 一个后端开发的 Vue 笔记【入门级】
  14. 洛谷P1233 木棍加工
  15. 洗衣店小程序,共享洗衣小程序,干洗店小程序毕设作品
  16. onnx 模型推理示例-Python 实现 |【onnx 模型推理】
  17. 云上办公兴起,华为云桌面Workspace更靠谱
  18. SourceTree导入产品证书
  19. 冯杰的手写艺术签名怎么写好看
  20. 华为/思科已知一个ip查对应mac和交换机接口

热门文章

  1. 针对电陶炉E5错误的维修总结(狗头)
  2. 数码产品专售网站毕业设计
  3. 删除通话记录怎样恢复
  4. python怎么批量下载年报_如何用Python写一个抓取新浪财经网指定企业年报的脚本...
  5. 自动关机shutdown命令
  6. Python 运用Dpkt库解析数据包
  7. 简单分析班级成绩模型
  8. 浏览器的怪异模式和标准模式的区别
  9. 【唯美童话森林xp主题】
  10. SpringBoot重点详解--使用Junit进行单元测试