VS 2022教程&VsCode技巧(创建C语言程序)
·
VS 2022教程&VsCode技巧(创建C语言程序)
文章目录
创建一个简单的C语言程序





写一个简单的hello world程序:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}

其它技巧:

显示行号:在文本编辑器中找到所有语言选择


一个基于EasyX图形界面的贪吃蛇程序
附贪吃蛇可执行程序下载
下载安装EasyX
EasyX官网
点击安装

创建一个C++程序
步骤同上(修改👇)
代码:
#include <graphics.h>
#include <windows.h>
#include <mmsystem.h>
#include <tchar.h>
#include <stdlib.h>
#include <time.h>
#ifdef _MSC_VER
#pragma execution_character_set("utf-8")
#pragma comment(lib, "winmm.lib")
#endif
#define WIN_W 960
#define WIN_H 720
#define TOP_H 72
#define BOARD_X 40
#define BOARD_Y 110
#define CELL 24
#define COLS 24
#define ROWS 20
#define BOARD_W (COLS * CELL)
#define BOARD_H (ROWS * CELL)
#define PANEL_X 650
#define PANEL_W 270
#define MAX_SNAKE (COLS * ROWS)
typedef struct Point {
int x;
int y;
} Point;
typedef enum GameState {
STATE_MENU = 0,
STATE_RUNNING = 1,
STATE_PAUSED = 2,
STATE_GAMEOVER = 3
} GameState;
typedef struct Button {
RECT rc;
int enabled;
int visible;
} Button;
static Point g_snake[MAX_SNAKE];
static int g_snake_len = 0;
static Point g_food = { 0, 0 };
static int g_dir_x = 1;
static int g_dir_y = 0;
static int g_next_dir_x = 1;
static int g_next_dir_y = 0;
static int g_score = 0;
static GameState g_state = STATE_MENU;
static int g_running = 1;
static int g_mouse_x = 0;
static int g_mouse_y = 0;
static DWORD g_last_step = 0;
static Button g_btn_start;
static Button g_btn_pause;
static Button g_btn_restart;
static Button g_btn_exit;
static int SamePoint(Point a, Point b) {
return a.x == b.x && a.y == b.y;
}
static int PointInRect(RECT rc, int x, int y) {
return x >= rc.left && x < rc.right && y >= rc.top && y < rc.bottom;
}
static int IsStartActionState(void) {
switch (g_state) {
case STATE_MENU:
case STATE_PAUSED:
case STATE_GAMEOVER:
return 1;
default:
return 0;
}
}
static int IsPauseActionState(void) {
switch (g_state) {
case STATE_RUNNING:
case STATE_PAUSED:
return 1;
default:
return 0;
}
}
static int IsPlayableState(void) {
switch (g_state) {
case STATE_RUNNING:
case STATE_PAUSED:
case STATE_GAMEOVER:
return 1;
default:
return 0;
}
}
static int IsCellOnSnake(int x, int y) {
int i;
for (i = 0; i < g_snake_len; ++i) {
if (g_snake[i].x == x && g_snake[i].y == y) {
return 1;
}
}
return 0;
}
static void PlaceFood(void) {
do {
g_food.x = rand() % COLS;
g_food.y = rand() % ROWS;
} while (IsCellOnSnake(g_food.x, g_food.y));
}
static int CurrentStepMs(void) {
int speed = 150 - (g_score / 50) * 6;
if (speed < 70) {
speed = 70;
}
return speed;
}
static void SetRunningState(GameState state) {
g_state = state;
g_last_step = GetTickCount();
}
static void ResetGame(void) {
int i;
g_snake_len = 4;
g_score = 0;
g_dir_x = 1;
g_dir_y = 0;
g_next_dir_x = 1;
g_next_dir_y = 0;
for (i = 0; i < g_snake_len; ++i) {
g_snake[i].x = COLS / 2 - i;
g_snake[i].y = ROWS / 2;
}
PlaceFood();
}
static void StartGame(void) {
ResetGame();
SetRunningState(STATE_RUNNING);
}
static void PauseGame(void) {
if (g_state == STATE_RUNNING) {
g_state = STATE_PAUSED;
}
}
static void ResumeGame(void) {
if (g_state == STATE_PAUSED) {
SetRunningState(STATE_RUNNING);
}
}
static void TogglePause(void) {
if (g_state == STATE_RUNNING) {
PauseGame();
}
else if (g_state == STATE_PAUSED) {
ResumeGame();
}
}
static void SoundClick(void) {
PlaySound(TEXT("SystemDefault"), NULL, SND_ALIAS | SND_ASYNC);
}
static void SoundFood(void) {
PlaySound(TEXT("SystemAsterisk"), NULL, SND_ALIAS | SND_ASYNC);
}
static void SoundOver(void) {
PlaySound(TEXT("SystemHand"), NULL, SND_ALIAS | SND_ASYNC);
}
static void GameOver(void) {
g_state = STATE_GAMEOVER;
SoundOver();
}
static void TrySetDirection(int dx, int dy) {
if (g_next_dir_x == -dx) {
if (g_next_dir_y == -dy) {
return;
}
}
g_next_dir_x = dx;
g_next_dir_y = dy;
}
static void StepGame(void) {
Point new_head;
int growing;
int limit;
int i;
int new_len;
if (g_state != STATE_RUNNING) {
return;
}
g_dir_x = g_next_dir_x;
g_dir_y = g_next_dir_y;
new_head.x = g_snake[0].x + g_dir_x;
new_head.y = g_snake[0].y + g_dir_y;
if (new_head.x < 0 || new_head.x >= COLS || new_head.y < 0 || new_head.y >= ROWS) {
GameOver();
return;
}
growing = SamePoint(new_head, g_food);
limit = growing ? g_snake_len : g_snake_len - 1;
for (i = 0; i < limit; ++i) {
if (SamePoint(new_head, g_snake[i])) {
GameOver();
return;
}
}
new_len = g_snake_len + (growing ? 1 : 0);
if (new_len > MAX_SNAKE) {
GameOver();
return;
}
for (i = new_len - 1; i > 0; --i) {
g_snake[i] = g_snake[i - 1];
}
g_snake[0] = new_head;
g_snake_len = new_len;
if (growing) {
g_score += 10;
SoundFood();
if (g_snake_len == MAX_SNAKE) {
GameOver();
return;
}
PlaceFood();
}
}
static void DrawTextCenter(RECT rc, LPCTSTR text, int text_size, COLORREF color) {
int tw;
int th;
int x;
int y;
setbkmode(TRANSPARENT);
settextcolor(color);
settextstyle(text_size, 0, TEXT("Microsoft YaHei"));
tw = textwidth(text);
th = textheight(text);
x = (rc.left + rc.right - tw) / 2;
y = (rc.top + rc.bottom - th) / 2;
outtextxy(x, y, text);
}
static void DrawButton(const Button* btn, LPCTSTR text, int enabled, int hovered) {
COLORREF fill;
COLORREF line;
COLORREF tcolor;
int shadow = 5;
if (!btn->visible) {
return;
}
if (!enabled) {
fill = RGB(48, 52, 60);
line = RGB(72, 78, 88);
tcolor = RGB(150, 155, 165);
}
else if (hovered) {
fill = RGB(64, 90, 130);
line = RGB(158, 198, 255);
tcolor = RGB(250, 252, 255);
}
else {
fill = RGB(42, 58, 82);
line = RGB(112, 145, 190);
tcolor = RGB(238, 242, 248);
}
setfillcolor(RGB(8, 10, 14));
solidrectangle(btn->rc.left + shadow, btn->rc.top + shadow,
btn->rc.right + shadow, btn->rc.bottom + shadow);
setfillcolor(fill);
setlinecolor(line);
solidrectangle(btn->rc.left, btn->rc.top, btn->rc.right, btn->rc.bottom);
rectangle(btn->rc.left, btn->rc.top, btn->rc.right, btn->rc.bottom);
DrawTextCenter(btn->rc, text, 20, tcolor);
}
static void DrawPanel(void) {
RECT top = { 0, 0, WIN_W, TOP_H };
RECT board_bg = { BOARD_X - 14, BOARD_Y - 14, BOARD_X + BOARD_W + 14, BOARD_Y + BOARD_H + 14 };
RECT panel_bg = { PANEL_X - 14, BOARD_Y - 14, PANEL_X + PANEL_W + 14, BOARD_Y + BOARD_H + 14 };
setfillcolor(RGB(15, 20, 28));
solidrectangle(0, 0, WIN_W, WIN_H);
setfillcolor(RGB(21, 30, 44));
solidrectangle(top.left, top.top, top.right, top.bottom);
setfillcolor(RGB(67, 102, 150));
solidrectangle(0, TOP_H - 4, WIN_W, TOP_H);
setfillcolor(RGB(20, 26, 35));
solidrectangle(board_bg.left, board_bg.top, board_bg.right, board_bg.bottom);
setfillcolor(RGB(13, 18, 25));
solidrectangle(BOARD_X, BOARD_Y, BOARD_X + BOARD_W, BOARD_Y + BOARD_H);
setfillcolor(RGB(20, 26, 35));
solidrectangle(panel_bg.left, panel_bg.top, panel_bg.right, panel_bg.bottom);
setfillcolor(RGB(15, 20, 28));
solidrectangle(PANEL_X, BOARD_Y, PANEL_X + PANEL_W, BOARD_Y + BOARD_H);
setlinecolor(RGB(45, 58, 74));
rectangle(BOARD_X, BOARD_Y, BOARD_X + BOARD_W, BOARD_Y + BOARD_H);
rectangle(PANEL_X, BOARD_Y, PANEL_X + PANEL_W, BOARD_Y + BOARD_H);
settextcolor(RGB(240, 245, 250));
setbkmode(TRANSPARENT);
settextstyle(30, 0, TEXT("Microsoft YaHei"));
outtextxy(28, 18, TEXT("\u8d2a\u5403\u86c7 EasyX \u6559\u5b66\u7248"));
settextstyle(18, 0, TEXT("Microsoft YaHei"));
outtextxy(618, 20, TEXT("\u65b9\u5411\u952e\u79fb\u52a8 \u7a7a\u683c\u6682\u505c R\u91cd\u65b0\u5f00\u59cb ESC\u9000\u51fa"));
}
static void DrawGrid(void) {
int i;
setlinecolor(RGB(28, 35, 46));
for (i = 0; i <= COLS; ++i) {
int x = BOARD_X + i * CELL;
line(x, BOARD_Y, x, BOARD_Y + BOARD_H);
}
for (i = 0; i <= ROWS; ++i) {
int y = BOARD_Y + i * CELL;
line(BOARD_X, y, BOARD_X + BOARD_W, y);
}
}
static void DrawFood(void) {
int cx = BOARD_X + g_food.x * CELL + CELL / 2;
int cy = BOARD_Y + g_food.y * CELL + CELL / 2;
setfillcolor(RGB(110, 14, 20));
solidcircle(cx, cy, CELL / 2 - 1);
setfillcolor(RGB(235, 72, 72));
solidcircle(cx, cy, CELL / 3);
setfillcolor(RGB(255, 210, 210));
solidcircle(cx - 4, cy - 4, 2);
}
static void DrawSnake(void) {
int i;
for (i = g_snake_len - 1; i >= 0; --i) {
int cx = BOARD_X + g_snake[i].x * CELL + CELL / 2;
int cy = BOARD_Y + g_snake[i].y * CELL + CELL / 2;
int body_r = CELL / 2 - 2;
if (i == 0) {
setfillcolor(RGB(130, 226, 145));
solidcircle(cx, cy, body_r + 1);
setfillcolor(RGB(92, 190, 111));
solidcircle(cx, cy, body_r - 2);
setfillcolor(RGB(20, 30, 25));
if (g_dir_x == 1) {
solidcircle(cx + 5, cy - 5, 2);
solidcircle(cx + 5, cy + 5, 2);
}
else if (g_dir_x == -1) {
solidcircle(cx - 5, cy - 5, 2);
solidcircle(cx - 5, cy + 5, 2);
}
else if (g_dir_y == -1) {
solidcircle(cx - 5, cy - 5, 2);
solidcircle(cx + 5, cy - 5, 2);
}
else {
solidcircle(cx - 5, cy + 5, 2);
solidcircle(cx + 5, cy + 5, 2);
}
}
else {
setfillcolor(RGB(59, 173, 87));
solidcircle(cx, cy, body_r);
setfillcolor(RGB(73, 194, 98));
solidcircle(cx - 3, cy - 3, body_r / 2);
}
}
}
static void DrawBoardStats(void) {
RECT rc;
TCHAR buf[128];
LPCTSTR state_text;
rc.left = PANEL_X + 18;
rc.top = BOARD_Y + 18;
rc.right = PANEL_X + PANEL_W - 18;
rc.bottom = BOARD_Y + 48;
DrawTextCenter(rc, TEXT("\u6e38\u620f\u4fe1\u606f"), 24, RGB(238, 244, 250));
settextstyle(18, 0, TEXT("Microsoft YaHei"));
settextcolor(RGB(230, 235, 240));
setbkmode(TRANSPARENT);
wsprintf(buf, TEXT("\u5f97\u5206\uff1a%d"), g_score);
outtextxy(PANEL_X + 24, BOARD_Y + 70, buf);
wsprintf(buf, TEXT("\u957f\u5ea6\uff1a%d"), g_snake_len);
outtextxy(PANEL_X + 24, BOARD_Y + 104, buf);
wsprintf(buf, TEXT("\u901f\u5ea6\uff1a%d ms/\u6b65"), CurrentStepMs());
outtextxy(PANEL_X + 24, BOARD_Y + 138, buf);
if (g_state == STATE_MENU) {
state_text = TEXT("\u83dc\u5355");
}
else if (g_state == STATE_RUNNING) {
state_text = TEXT("\u8fd0\u884c");
}
else if (g_state == STATE_PAUSED) {
state_text = TEXT("\u6682\u505c");
}
else {
state_text = TEXT("\u7ed3\u675f");
}
wsprintf(buf, TEXT("\u72b6\u6001\uff1a%s"), state_text);
outtextxy(PANEL_X + 24, BOARD_Y + 172, buf);
setlinecolor(RGB(52, 64, 80));
line(PANEL_X + 18, BOARD_Y + 210, PANEL_X + PANEL_W - 18, BOARD_Y + 210);
outtextxy(PANEL_X + 24, BOARD_Y + 228, TEXT("\u64cd\u4f5c\u8bf4\u660e\uff1a"));
outtextxy(PANEL_X + 24, BOARD_Y + 260, TEXT("\u2191 \u2193 \u2190 \u2192 \u63a7\u5236\u65b9\u5411"));
outtextxy(PANEL_X + 24, BOARD_Y + 292, TEXT("\u7a7a\u683c \u6682\u505c / \u7ee7\u7eed"));
outtextxy(PANEL_X + 24, BOARD_Y + 324, TEXT("R \u91cd\u65b0\u5f00\u59cb"));
outtextxy(PANEL_X + 24, BOARD_Y + 356, TEXT("ESC \u9000\u51fa\u7a0b\u5e8f"));
}
static void DrawCenterCard(void) {
RECT card;
RECT title_rc;
RECT sub_rc;
RECT tip_rc;
TCHAR title[64];
TCHAR sub[128];
TCHAR tip[160];
card.left = BOARD_X + 58;
card.top = BOARD_Y + 50;
card.right = BOARD_X + BOARD_W - 58;
card.bottom = BOARD_Y + BOARD_H - 50;
setfillcolor(RGB(19, 26, 37));
solidrectangle(card.left, card.top, card.right, card.bottom);
setlinecolor(RGB(82, 113, 156));
rectangle(card.left, card.top, card.right, card.bottom);
setfillcolor(RGB(41, 62, 89));
solidrectangle(card.left, card.top, card.right, card.top + 8);
title_rc.left = card.left;
title_rc.top = card.top + 18;
title_rc.right = card.right;
title_rc.bottom = card.top + 78;
sub_rc.left = card.left + 20;
sub_rc.top = card.top + 92;
sub_rc.right = card.right - 20;
sub_rc.bottom = card.top + 158;
tip_rc.left = card.left + 20;
tip_rc.top = card.bottom - 78;
tip_rc.right = card.right - 20;
tip_rc.bottom = card.bottom - 18;
if (g_state == STATE_MENU) {
wsprintf(title, TEXT("\u8d2a\u5403\u86c7"));
wsprintf(sub, TEXT("EasyX \u56fe\u5f62\u5316\u6559\u5b66\u7248"));
wsprintf(tip, TEXT("\u70b9\u51fb\u53f3\u4fa7\u201c\u5f00\u59cb\u6e38\u620f\u201d\u8fdb\u5165\uff1b\u65b9\u5411\u952e\u79fb\u52a8\uff0c\u7a7a\u683c\u6682\u505c\uff0cR \u91cd\u65b0\u5f00\u59cb\u3002"));
}
else if (g_state == STATE_PAUSED) {
wsprintf(title, TEXT("\u5df2\u6682\u505c"));
wsprintf(sub, TEXT("\u6e38\u620f\u4f1a\u505c\u5728\u5f53\u524d\u753b\u9762"));
wsprintf(tip, TEXT("\u70b9\u51fb\u201c\u7ee7\u7eed\u6e38\u620f\u201d\u6216\u6309\u7a7a\u683c\u6062\u590d\u3002"));
}
else {
wsprintf(title, TEXT("\u6e38\u620f\u7ed3\u675f"));
wsprintf(sub, TEXT("\u6700\u7ec8\u5206\u6570\uff1a%d"), g_score);
wsprintf(tip, TEXT("\u70b9\u51fb\u201c\u518d\u6765\u4e00\u5c40\u201d\u6216\u6309 R \u91cd\u65b0\u5f00\u59cb\u3002"));
}
DrawTextCenter(title_rc, title, 40, RGB(242, 247, 252));
DrawTextCenter(sub_rc, sub, 24, RGB(203, 217, 232));
DrawTextCenter(tip_rc, tip, 20, RGB(180, 195, 210));
}
static void DrawScene(void) {
RECT rc;
LPCTSTR start_text;
LPCTSTR pause_text;
int start_hover;
int pause_hover;
int restart_hover;
int exit_hover;
DrawPanel();
DrawBoardStats();
DrawGrid();
if (IsPlayableState()) {
DrawFood();
DrawSnake();
}
if (IsStartActionState()) {
DrawCenterCard();
}
if (g_state == STATE_MENU) {
start_text = TEXT("\u5f00\u59cb\u6e38\u620f");
}
else if (g_state == STATE_PAUSED) {
start_text = TEXT("\u7ee7\u7eed\u6e38\u620f");
}
else {
start_text = TEXT("\u518d\u6765\u4e00\u5c40");
}
if (g_state == STATE_RUNNING) {
pause_text = TEXT("\u6682\u505c\u6e38\u620f");
}
else {
pause_text = TEXT("\u7ee7\u7eed\u6e38\u620f");
}
g_btn_start.visible = 1;
g_btn_start.enabled = IsStartActionState();
g_btn_pause.visible = 1;
g_btn_pause.enabled = IsPauseActionState();
g_btn_restart.visible = 1;
g_btn_restart.enabled = (g_state != STATE_MENU);
g_btn_exit.visible = 1;
g_btn_exit.enabled = 1;
start_hover = 0;
if (g_btn_start.enabled) {
start_hover = PointInRect(g_btn_start.rc, g_mouse_x, g_mouse_y);
}
pause_hover = 0;
if (g_btn_pause.enabled) {
pause_hover = PointInRect(g_btn_pause.rc, g_mouse_x, g_mouse_y);
}
restart_hover = 0;
if (g_btn_restart.enabled) {
restart_hover = PointInRect(g_btn_restart.rc, g_mouse_x, g_mouse_y);
}
exit_hover = PointInRect(g_btn_exit.rc, g_mouse_x, g_mouse_y);
DrawButton(&g_btn_start, start_text, g_btn_start.enabled, start_hover);
DrawButton(&g_btn_pause, pause_text, g_btn_pause.enabled, pause_hover);
DrawButton(&g_btn_restart, TEXT("\u91cd\u65b0\u5f00\u59cb"), g_btn_restart.enabled, restart_hover);
DrawButton(&g_btn_exit, TEXT("\u9000\u51fa\u7a0b\u5e8f"), g_btn_exit.enabled, exit_hover);
rc.left = PANEL_X + 18;
rc.top = BOARD_Y + BOARD_H - 92;
rc.right = PANEL_X + PANEL_W - 18;
rc.bottom = BOARD_Y + BOARD_H - 22;
DrawTextCenter(rc, TEXT("\u8bfe\u8bbe\u63d0\u793a\uff1a\u53ef\u76f4\u63a5\u6f14\u793a\u83dc\u5355\u3001\u6682\u505c\u3001\u91cd\u5f00\u548c\u97f3\u6548"), 18, RGB(150, 165, 182));
}
static void OnMouseClick(int x, int y) {
if (PointInRect(g_btn_start.rc, x, y)) {
if (!IsStartActionState()) {
return;
}
SoundClick();
if (g_state == STATE_PAUSED) {
ResumeGame();
}
else {
StartGame();
}
return;
}
if (PointInRect(g_btn_pause.rc, x, y)) {
if (!IsPauseActionState()) {
return;
}
SoundClick();
TogglePause();
return;
}
if (PointInRect(g_btn_restart.rc, x, y) && g_state != STATE_MENU) {
SoundClick();
StartGame();
return;
}
if (PointInRect(g_btn_exit.rc, x, y)) {
SoundClick();
g_running = 0;
}
}
static void OnKeyDown(int vk) {
switch (vk) {
case VK_UP:
if (g_state == STATE_RUNNING) {
TrySetDirection(0, -1);
}
break;
case VK_DOWN:
if (g_state == STATE_RUNNING) {
TrySetDirection(0, 1);
}
break;
case VK_LEFT:
if (g_state == STATE_RUNNING) {
TrySetDirection(-1, 0);
}
break;
case VK_RIGHT:
if (g_state == STATE_RUNNING) {
TrySetDirection(1, 0);
}
break;
case VK_SPACE:
if (IsPauseActionState()) {
TogglePause();
SoundClick();
}
else {
StartGame();
SoundClick();
}
break;
case 'R':
StartGame();
SoundClick();
break;
case VK_RETURN:
if (IsStartActionState()) {
if (g_state == STATE_PAUSED) {
ResumeGame();
}
else {
StartGame();
}
SoundClick();
}
break;
case VK_ESCAPE:
g_running = 0;
break;
default:
break;
}
}
static void InitButtons(void) {
g_btn_start.rc.left = PANEL_X + 24;
g_btn_start.rc.top = BOARD_Y + 220;
g_btn_start.rc.right = PANEL_X + PANEL_W - 24;
g_btn_start.rc.bottom = BOARD_Y + 268;
g_btn_start.enabled = 1;
g_btn_start.visible = 1;
g_btn_pause.rc.left = PANEL_X + 24;
g_btn_pause.rc.top = BOARD_Y + 286;
g_btn_pause.rc.right = PANEL_X + PANEL_W - 24;
g_btn_pause.rc.bottom = BOARD_Y + 334;
g_btn_pause.enabled = 1;
g_btn_pause.visible = 1;
g_btn_restart.rc.left = PANEL_X + 24;
g_btn_restart.rc.top = BOARD_Y + 352;
g_btn_restart.rc.right = PANEL_X + PANEL_W - 24;
g_btn_restart.rc.bottom = BOARD_Y + 400;
g_btn_restart.enabled = 1;
g_btn_restart.visible = 1;
g_btn_exit.rc.left = PANEL_X + 24;
g_btn_exit.rc.top = BOARD_Y + 418;
g_btn_exit.rc.right = PANEL_X + PANEL_W - 24;
g_btn_exit.rc.bottom = BOARD_Y + 466;
g_btn_exit.enabled = 1;
g_btn_exit.visible = 1;
}
int main(void) {
ExMessage msg;
DWORD now;
DWORD last_frame = 0;
srand((unsigned int)time(NULL));
initgraph(WIN_W, WIN_H);
SetWindowText(GetHWnd(), TEXT("\u8d2a\u5403\u86c7 EasyX \u6559\u5b66\u7248"));
setbkcolor(RGB(15, 20, 28));
setbkmode(TRANSPARENT);
InitButtons();
ResetGame();
SetRunningState(STATE_MENU);
BeginBatchDraw();
while (g_running) {
while (peekmessage(&msg, EM_MOUSE | EM_KEY, true)) {
if (msg.message == WM_MOUSEMOVE) {
g_mouse_x = msg.x;
g_mouse_y = msg.y;
}
else if (msg.message == WM_LBUTTONDOWN) {
g_mouse_x = msg.x;
g_mouse_y = msg.y;
OnMouseClick(msg.x, msg.y);
}
else if (msg.message == WM_KEYDOWN) {
OnKeyDown(msg.vkcode);
}
}
now = GetTickCount();
if (g_state == STATE_RUNNING) {
if (now - g_last_step >= (DWORD)CurrentStepMs()) {
StepGame();
g_last_step = now;
}
}
if (now - last_frame >= 16) {
cleardevice();
DrawScene();
FlushBatchDraw();
last_frame = now;
}
Sleep(10);
}
EndBatchDraw();
closegraph();
return 0;
}
运行效果:
VS code教程
1 疑难解析
1 中文乱码,请看:
- 看最后要加一行代码



代码一
代码如下
"code-runner.executorMap": {
"javascript": "node",
"php": "C:\\php\\php.exe",
"python": "python",
"perl": "perl",
"ruby": "C:\\Ruby23-x64\\bin\\ruby.exe",
"go": "go run",
"html": "\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"",
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
"c": "chcp 65001 && cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
},
代码二
下面这个基本上解决了控制台和运行窗口中文乱码的问题
温馨提示
使用下面的代码时,在调用其他系统文件时,要确保文件编码为GBK格式。例如在调用Windows系统的文本文件时,要确保文件的编码格式为GBK格式
"code-runner.executorMap": {
"javascript": "node",
"php": "C:\\php\\php.exe",
"python": "python",
"perl": "perl",
"ruby": "C:\\Ruby23-x64\\bin\\ruby.exe",
"go": "go run",
"html": "\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"",
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
// "c": "chcp 65001 && cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt -finput-charset=UTF-8 -fexec-charset=GBK && .\\$fileNameWithoutExt"
//输入UTF-8 → 输出GBK(兼容默认终端)
//参数作用
//-finput-charset=UTF-8:声明源代码文件为UTF-8编码(若文件实际编码不符需调整)
//-fexec-charset=GBK:强制可执行文件运行时使用GBK编码输出,匹配CMD/PowerShell默认编码
},
点击可执行程序一闪而过
- 解决可执行程序.exe一闪而过的方法
在C语言中
- 在主程序中的最后应加入
system("pause"),如出现无法识别system则应在头文件上加上#include <stdlib.h>即可
在python中,在Python脚本末尾添加阻塞代码,强制等待用户输入:(推荐,系统兼容性好)
input("按回车键退出...")
或使用系统暂停命令:
import os
os.system("pause")
3 打开可执行程序.exe中文乱码
如下图:在tasks.json中添加-fexec-charset=GBK重启软件即可
温馨提示:注意添加时不要忘记代码的格式,要在前面加上一个英文格式下的逗号分隔符

在VScode里面打开控制台
如下图,在launch.json中,把false改为true,则可以再工具栏中的运行选项中选择以非调试模式运行,打开控制台
打开别人的程序文件中文乱码
- 通过改变编码重新打开,可选择GBK格式
更多推荐

所有评论(0)