基于VC 6.0使用C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊的具體代碼,供大家參考,具體內(nèi)容如下
裸寫(xiě)的俄羅斯方塊的代碼,有意見(jiàn)或者想征用,直接評(píng)論留言即可。
效果如下:

代碼:
/***************************************************************/
/*俄羅斯方塊的實(shí)現(xiàn)
* 基于VC 6.0 編譯鏈接即可運(yùn)行
* 已實(shí)現(xiàn)的功能:
* 1、初步的規(guī)劃及背景圖案的顯示
* 2、四種方塊實(shí)現(xiàn)左右移動(dòng)、下鍵加速、上鍵變形(兩種變形)功能
* 3、下落方塊碰壁及觸碰到其它方塊的檢測(cè)
* 4、方塊積滿一行的消除并加分的功能
* 5、預(yù)測(cè)方塊的功能
* 6、引入set_windows_pos函數(shù)解決閃屏問(wèn)題
* 未解決的缺陷或者代碼存在的問(wèn)題
* 1、預(yù)測(cè)方塊處莫名其妙的出現(xiàn)背景塊
* 2、代碼耦合性太高,接口封裝還是不夠好
* 2017.3.22
* 版權(quán):通渭縣西關(guān)小學(xué)四年級(jí)一班田剛
*/
/***************************************************************/
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<string.h>
#define BACK 176//背景圖案
#define BACK_INT -80//背景的整數(shù)表示
#define FRAME 178//分割框圖案
#define NODE 219//方塊圖案
#define NODE_INT -37//方塊的整數(shù)表示
#define ERROR -1
#define OK 0
int score = 0;//計(jì)分
static int time = 500;//時(shí)間,初始為500毫秒
char back[20][30] = {0};//豎直為x軸,橫軸為y軸,原點(diǎn)在右上角
int block_type = 0;//方塊類(lèi)型
void backgroud_init(void);//畫(huà)面背景的初始化
void set_windows_pos(int i, int j);//指定光標(biāo)位置
void block_display(int block_type, int dir_type, int coor_x, int coor_y, int color_type);//顯示或者消除方塊
void time_add(void);//加速函數(shù)
void block_type_change(void);//方塊類(lèi)型變化
int block_move_check_x(int block_type, int dir_type, int coor_x, int coor_y);//檢測(cè)方塊是否觸到下面已經(jīng)停止的方塊
int block_move_check_y(int block_type, int dir_type, int coor_x, int coor_y, int dir_block);//檢測(cè)方塊是否觸碰到左右的方塊
int new_back_y_check(int block_type, int dir_type, int coor_y);//檢測(cè)方塊是否觸碰到墻壁
int block_clear_sort(void);//檢測(cè)是否滿一行,需要消除得分
void block_clear_x(int row);//消除一個(gè)滿行(都是方塊)
int main(void)
{
int c = 0;
int new_dir_type = 0;//新的方塊方向
int befor_dir_type = 0;//舊的方塊方向
int new_back_x = 0;//新的方塊頭坐標(biāo)x
int new_back_y = 0;//新的方塊頭坐標(biāo)y
int befor_back_x = 0;//舊的方塊頭坐標(biāo)x
int befor_back_y = -1;//舊的方塊頭坐標(biāo)y
int block_dir = -1;//方塊的移動(dòng)方向
backgroud_init();//背景的顯示
while(1)
{
block_type_change();//方塊類(lèi)型變化
new_back_y = 8;//每次方塊從最頂端出現(xiàn)時(shí),其y坐標(biāo)都為8
time = 500;
//怎樣在這里清除鍵盤(pán)輸入,flush不起作用
for(new_back_x = 0; new_back_x < 20; new_back_x++)
{
befor_dir_type = new_dir_type;
befor_back_x = new_back_x - 1;
befor_back_y = new_back_y;
block_dir = -1;//方塊的方向變量初始為-1
block_display(block_type, 0, 17, 26, NODE);//畫(huà)上預(yù)測(cè)區(qū)域的方塊
if(kbhit())//檢測(cè)有輸入
{
c = getch();
if(c > 0)
{
switch(c)
{
case 119://上
if(0 == new_dir_type)
{
new_dir_type = 1;//豎向
}
else
{
new_dir_type = 0;//橫向
}
break;
case 97://左
new_back_y--;
block_dir = 0;
break;
case 100://右
new_back_y++;
block_dir = 1;
break;
case 115://下
time_add();//加速
break;
default://ESC
break;
}
}
}
new_back_y = new_back_y_check(block_type, new_dir_type, new_back_y);//檢查是否觸碰到左右壁
block_display(block_type, befor_dir_type, befor_back_x, befor_back_y, BACK);//原來(lái)的方塊位置清除掉
if(-1 != block_dir)//左右移動(dòng)了方塊
{
if(ERROR == block_move_check_y(block_type, new_dir_type, new_back_x, new_back_y, block_dir))//檢查移動(dòng)的方塊是觸碰到左右的方塊
{
new_back_y = befor_back_y;
}
}
block_display(block_type, new_dir_type, new_back_x, new_back_y, NODE);//畫(huà)下一個(gè)方塊位置
if(ERROR == block_move_check_x(block_type, new_dir_type, new_back_x, new_back_y))//檢查移動(dòng)的方塊是否觸發(fā)到下面的方塊
{
break;
}
Sleep(time);
}
block_display(block_type, 0, 17, 26, BACK);//清楚預(yù)測(cè)區(qū)域的方塊
if(OK == block_clear_sort())//檢查下面方塊是否等夠得分,能得分則消除得分
{
set_windows_pos(8, 22);//更新得分
printf("%d", score);
}
}
return 0;
}
/***************************************************************/
/*** 畫(huà)面背景的初始化 ***/
/***其中原點(diǎn)在右上角,豎軸為x軸,橫軸為y軸。y(0 - 19)為方塊區(qū)***/
/***域,20 - 30 為計(jì)分區(qū)域及方塊預(yù)測(cè)提示區(qū)域 ***/
/***************************************************************/
void backgroud_init(void)
{
int x = 0, y = 0;
for(x = 0; x < 20; x++)
{
for(y = 0; y < 20; y++)
{
back[x][y] = BACK;
}
}
for(x = 0; x < 20; x++)
{
for(y = 20; y < 30; y++)
{
if((0 == x) || (4 == x) || (10 == x) || (19 == x))
{
back[x][y] = FRAME;
}
if((20 == y) || (29 == y))
{
back[x][y] = FRAME;
}
}
}
//背景圖案的顯示
for(x = 0; x < 20; x++)
{
for(y = 0; y < 30; y++)
{
printf("%c", back[x][y]);
}
printf("\n");
}
//顯示TETRIS
set_windows_pos(2, 22);//移動(dòng)windows的光標(biāo)
printf("TETRIS\n");
//顯示積分
set_windows_pos(6, 22);//移動(dòng)windows的光標(biāo)
printf("SORT\n");
set_windows_pos(8, 22);
printf("%d\n", score);
//顯示下一個(gè)要出現(xiàn)的方塊
set_windows_pos(12, 22);//移動(dòng)windows的光標(biāo)
printf("EXPECT\n");
}
/***************************************************************/
/*** 設(shè)置windows光標(biāo),類(lèi)似于TC中的gotoxy ***/
/***i,j 為要傳入的x,y坐標(biāo) ***/
/***************************************************************/
void set_windows_pos(int i, int j)//設(shè)置windows光標(biāo),類(lèi)似于TC中的gotoxy
{
/*if((0 > i) || (0 > j))
{
return ERROR;
}*/
/*windows的橫軸是x軸,而本程序設(shè)計(jì)的是豎軸是X軸
這里做個(gè)轉(zhuǎn)換*/
COORD pos={j,i};
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut,pos);
}
/***************************************************************/
/***********************消除/填上方塊***************************/
/***輸入:block_type 方塊類(lèi)型 1:長(zhǎng)條 2:2型 3:7型 4:田型***/
/***輸入:dir_type 方向類(lèi)型 0:橫向 1:豎向 ***/
/***輸入:coor_x coor_y 方塊當(dāng)前頭的坐標(biāo) ***/
/***輸入:color_type 圖標(biāo)類(lèi)型 BACK 背景色 NODE 方塊色 ***/
/***初始coor_x,coor_y為一個(gè)方塊的最右下的一個(gè)方塊的坐標(biāo) ***/
/***************************************************************/
void block_display(int block_type, int dir_type, int coor_x, int coor_y, int color_type)
{
int x = 0, y = 0;
switch (block_type)
{
case 1://長(zhǎng)條
if(0 == dir_type)//橫向
{
for(y = coor_y; y >= (coor_y - 3); y--)
{
back[coor_x][y] = color_type;//方塊色
set_windows_pos(coor_x, y);//移動(dòng)windows的光標(biāo)
printf("%c", back[coor_x][y]);
}
}
else if(1 == dir_type)//豎向
{
for(x = coor_x; (x >= (coor_x - 3)) && (x >= 0); x--)
{
back[x][coor_y] = color_type;//方塊色
set_windows_pos(x, coor_y);//移動(dòng)windows的光標(biāo)
printf("%c", back[x][coor_y]);
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 2://2型
if(0 == dir_type)//橫向
{
for(y = coor_y; y >= coor_y - 1; y--)
{
back[coor_x][y] = color_type;//方塊色
set_windows_pos(coor_x, y);//移動(dòng)windows的光標(biāo)
printf("%c", back[coor_x][y]);
}
coor_x--;
coor_y--;
if(coor_x < 0)
{
return;
}
for(y = coor_y; y >= coor_y - 1; y--)
{
back[coor_x][y] = color_type;//方塊色
set_windows_pos(coor_x, y);//移動(dòng)windows的光標(biāo)
printf("%c", back[coor_x][y]);
}
}
else if(1 == dir_type)//豎向
{
for(x = coor_x; (x >= coor_x - 1) && (x >= 0); x--)
{
back[x][coor_y] = color_type;//方塊色
set_windows_pos(x, coor_y);//移動(dòng)windows的光標(biāo)
printf("%c", back[x][coor_y]);
}
coor_x--;
coor_y--;
if(coor_x < 0)
{
return;
}
for(x = coor_x; x >= coor_x - 1; x--)
{
back[x][coor_y] = color_type;//方塊色
set_windows_pos(x, coor_y);//移動(dòng)windows的光標(biāo)
printf("%c", back[x][coor_y]);
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 3://7型
if(0 == dir_type)//橫向
{
for(y = coor_y; y >= coor_y - 2; y--)
{
back[coor_x][y] = color_type;//方塊色
set_windows_pos(coor_x, y);//移動(dòng)windows的光標(biāo)
printf("%c", back[coor_x][y]);
}
coor_x--;
coor_y = coor_y - 2;
if(coor_x < 0)
{
return;
}
back[coor_x][coor_y] = color_type;//方塊色
set_windows_pos(coor_x, coor_y);//移動(dòng)windows的光標(biāo)
printf("%c", back[coor_x][coor_y]);
}
else if(1 == dir_type)//豎向
{
for(x = coor_x; (x >= coor_x - 2) && (x >= 0); x--)
{
back[x][coor_y] = color_type;//方塊色
set_windows_pos(x, coor_y);//移動(dòng)windows的光標(biāo)
printf("%c", back[x][coor_y]);
}
coor_x = coor_x - 2;
coor_y--;
if(coor_x < 0)
{
return;
}
back[coor_x][coor_y] = color_type;//方塊色
set_windows_pos(coor_x, coor_y);//移動(dòng)windows的光標(biāo)
printf("%c", back[coor_x][coor_y]);
}
else
{
printf("dir_type is error!\n");
}
break;
case 4://田型
if((0 == dir_type) || (1 == dir_type))//橫向
{
for(y = coor_y; y >= coor_y - 1; y--)
{
back[coor_x][y] = color_type;//方塊色
set_windows_pos(coor_x, y);//移動(dòng)windows的光標(biāo)
printf("%c", back[coor_x][y]);
}
coor_x--;
if(coor_x < 0)
{
return;
}
for(y = coor_y; y >= coor_y - 1; y--)
{
back[coor_x][y] = color_type;//方塊色
set_windows_pos(coor_x, y);//移動(dòng)windows的光標(biāo)
printf("%c", back[coor_x][y]);
}
}
else
{
printf("dir_type is error!\n");
}
break;
default:
printf("block_type is error!\n");
break;
}
}
void time_add(void)//加速函數(shù)
{
if(500 == time)
{
time = 100;//減少的100毫秒
}
else if(100 == time)
{
time = 500;
}
else
{
;//暫時(shí)留空
}
}
void block_type_change(void)//方塊類(lèi)型變化
{
block_type++;
if(block_type > 4)
{
block_type = 1;
}
}
/***************************************************************/
/*******************方塊y坐標(biāo)撞墻檢測(cè)***************************/
/***輸入:block_type 方塊類(lèi)型 1:長(zhǎng)條 2:2型 3:7型 4:田型***/
/***輸入:dir_type 方向類(lèi)型 0:橫向 1:豎向 ***/
/***輸入:coor_y 方塊當(dāng)前頭(右下角第一個(gè)方塊)的坐標(biāo) ***/
/***************************************************************/
int new_back_y_check(int block_type, int dir_type, int coor_y)
{
if(coor_y > 19)
{
coor_y = 19;
}
switch (block_type)
{
case 1://長(zhǎng)條
if(0 == dir_type)//橫向
{
if(coor_y - 3 < 0)
{
coor_y = 3;
}
}
else if(1 == dir_type)//豎向
{
if(coor_y < 0)
{
coor_y = 0;
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 2://2型
if(0 == dir_type)//橫向
{
if(coor_y - 2 < 0)
{
coor_y = 2;
}
}
else if(1 == dir_type)//豎向
{
if(coor_y - 1 < 0)
{
coor_y = 1;
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 3://7型
if(0 == dir_type)//橫向
{
if(coor_y - 2 < 0)
{
coor_y = 2;
}
}
else if(1 == dir_type)//豎向
{
if(coor_y - 1 < 0)
{
coor_y = 1;
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 4://田型
if((0 == dir_type) || (1 == dir_type))//橫向
{
if(coor_y - 1 < 0)
{
coor_y = 1;
}
}
else
{
printf("dir_type is error!\n");
}
break;
default:
printf("block_type is error!\n");
break;
}
return coor_y;
}
/*
檢查方塊是否觸到下面已經(jīng)停止的方塊,觸碰到就返回ERROR
*/
/***************************************************************/
/****檢查方塊是否觸到下面已經(jīng)停止的方塊,觸碰到就返回ERROR ***/
/***輸入:block_type 方塊類(lèi)型 1:長(zhǎng)條 2:2型 3:7型 4:田型***/
/***輸入:dir_type 方向類(lèi)型 0:橫向 1:豎向 ***/
/***輸入:coor_x coor_y 方塊當(dāng)前頭的坐標(biāo) ***/
/***初始coor_x,coor_y為一個(gè)方塊的最右下的一個(gè)方塊的坐標(biāo) ***/
/***************************************************************/
int block_move_check_x(int block_type, int dir_type, int coor_x, int coor_y)
{
int ret = OK;
int x = 0, y = 0;
switch (block_type)
{
case 1://長(zhǎng)條
if(0 == dir_type)//橫向
{
for(y = coor_y; y >= coor_y - 3; y--)
{
if(NODE_INT == back[coor_x + 1][y])
{
ret = ERROR;
break;
}
}
}
else if(1 == dir_type)//豎向
{
if(NODE_INT == back[coor_x + 1][coor_y])
{
ret = ERROR;
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 2://2型
if(0 == dir_type)//橫向
{
for(y = coor_y; y >= coor_y - 1; y--)
{
if(NODE_INT == back[coor_x + 1][coor_y])
{
ret = ERROR;
break;
}
}
coor_x--;
coor_y =coor_y - 2 ;
if(NODE_INT == back[coor_x + 1][coor_y])
{
ret = ERROR;
}
}
else if(1 == dir_type)//豎向
{
if(NODE_INT == back[coor_x + 1][coor_y])
{
ret = ERROR;
}
coor_x--;
coor_y--;
if(NODE_INT == back[coor_x + 1][coor_y])
{
ret = ERROR;
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 3://7型
if(0 == dir_type)//橫向
{
for(y = coor_y; y >= coor_y - 2; y--)
{
if(NODE_INT == back[coor_x + 1][y])
{
ret = ERROR;
break;
}
}
}
else if(1 == dir_type)//豎向
{
if(NODE_INT == back[coor_x + 1][coor_y])
{
ret = ERROR;
}
coor_x = coor_x - 2;
coor_y--;
if(NODE_INT == back[coor_x + 1][coor_y])
{
ret = ERROR;
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 4://田型
if((0 == dir_type) || (1 == dir_type))//橫向
{
for(y = coor_y; y >= coor_y - 1; y--)
{
if(NODE_INT == back[coor_x + 1][y])
{
ret = ERROR;
break;
}
}
}
else
{
printf("dir_type is error!\n");
}
break;
default:
printf("block_type is error!\n");
break;
}
return ret;
}
/***************************************************************/
/****檢查方塊在向下移動(dòng)的過(guò)程中是否觸到左右的方塊 ***/
/***輸入:block_type 方塊類(lèi)型 1:長(zhǎng)條 2:2型 3:7型 4:田型***/
/***輸入:dir_type 方向類(lèi)型 0:橫向 1:豎向 ***/
/***輸入:coor_x coor_y 方塊當(dāng)前頭(右下)的坐標(biāo) ***/
/***輸入:dir_block 當(dāng)前方塊的移動(dòng)方向(左右) ***/
/***************************************************************/
int block_move_check_y(int block_type, int dir_type, int coor_x, int coor_y, int dir_block)
{
int x = 0, y = 0;
int ret = OK;
switch (block_type)
{
case 1://長(zhǎng)條
if(0 == dir_type)//橫向
{
if(1 == dir_block)//右移
{
if(NODE_INT == back[coor_x][coor_y])
{
ret = ERROR;
}
}
else if(0 == dir_block)//左移
{
if(NODE_INT == back[coor_x][coor_y - 3])
{
ret = ERROR;
}
}
else
{
printf("dir_block is error!");
}
}
else if(1 == dir_type)//豎向
{
//當(dāng)長(zhǎng)條為豎向時(shí),不用判斷長(zhǎng)條是往左移還是往右移
for(x = coor_x; x >= coor_x - 3; x--)
{
if(NODE_INT == back[x][coor_y])
{
ret = ERROR;
break;
}
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 2://2型
if(0 == dir_type)//橫向
{
if(1 == dir_block)//右移
{
if(NODE_INT == back[coor_x][coor_y])
{
ret = ERROR;
break;
}
if(NODE_INT == back[coor_x - 1][coor_y - 1])
{
ret = ERROR;
}
}
else if(0 == dir_block)//左移
{
if(NODE_INT == back[coor_x][coor_y - 1])
{
ret = ERROR;
break;
}
if(NODE_INT == back[coor_x - 1][coor_y - 2])
{
ret = ERROR;
}
}
else
{
printf("dir_block is error!");
}
}
else if(1 == dir_type)//豎向
{
if(1 == dir_block)//右移
{
for(x = coor_x; x >= coor_x - 1; x--)
{
if(NODE_INT == back[x][coor_y])
{
ret = ERROR;
break;
}
}
if(NODE_INT == back[coor_x - 2][coor_y - 1])
{
ret = ERROR;
}
}
else if(0 == dir_block)//左移
{
if(NODE_INT == back[coor_x][coor_y])
{
ret = ERROR;
break;
}
coor_x--;
coor_y--;
for(x = coor_x; x >= coor_x - 1; x--)
{
if(NODE_INT == back[x][coor_y])
{
ret = ERROR;
break;
}
}
}
else
{
printf("dir_block is error!");
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 3://7型
if(0 == dir_type)//橫向
{
if(1 == dir_block)//右移
{
if(NODE_INT == back[coor_x][coor_y])
{
ret = ERROR;
break;
}
if(NODE_INT == back[coor_x - 1][coor_y - 2])
{
ret = ERROR;
}
}
else if(0 == dir_block)//左移
{
if(NODE_INT == back[coor_x][coor_y - 2])
{
ret = ERROR;
break;
}
if(NODE_INT == back[coor_x - 1][coor_y - 2])
{
ret = ERROR;
}
}
else
{
printf("dir_block is error!");
}
}
else if(1 == dir_type)//豎向
{
if(1 == dir_block)//右移
{
for(x = coor_x; (x >= coor_x - 2) && (x >= 0); x--)
{
if(NODE_INT == back[x][coor_y])
{
ret = ERROR;
break;
}
}
}
else if(0 == dir_block)//左移
{
for(x = coor_x - 1; (x >= coor_x - 2) && (x >= 0); x--)
{
if(NODE_INT == back[x][coor_y])
{
ret = ERROR;
break;
}
}
coor_x = coor_x - 2;
coor_y--;
if(NODE_INT == back[coor_x][coor_y])
{
ret = ERROR;
}
}
else
{
printf("dir_block is error!");
}
}
else
{
printf("dir_type is error!\n");
}
break;
case 4://田型
if((0 == dir_type) || (1 == dir_type))//橫向
{
if(1 == dir_block)//右移
{
for(x = coor_x; x >= coor_x - 1; x--)
{
if(NODE_INT == back[x][coor_y])
{
ret = ERROR;
break;
}
}
}
else if(0 == dir_block)//左移
{
for(x = coor_x; x >= coor_x - 1; x--)
{
if(NODE_INT == back[x][coor_y - 1])
{
ret = ERROR;
break;
}
}
}
else
{
printf("dir_block is error!");
}
}
else
{
printf("dir_type is error!\n");
}
break;
default:
printf("block_type is error!\n");
break;
}
return ret;
}
void block_clear_x(int row)//消除某一行
{
int x = 0, y = 0;
char back_replace[20][30] = {0};//替代back
memcpy(back_replace, back, sizeof(back));//將back暫存到back_replace中
for(x = 0; x <= row; x++)
{
for(y = 0; y < 20; y++)
{
back[x][y] = BACK;//初始化未背景色
}
}
for(x = row; x >= 1; x--)
{
for(y = 0; y < 20; y++)
{
back[x][y] = back_replace[x - 1][y];//消除一行,方塊下沉
}
}
set_windows_pos(0, 0);//移動(dòng)windows的光標(biāo)
for(x = 0; x < 20; x++)
{
for(y = 0; y < 20; y++)
{
printf("%c", back[x][y]);
}
printf("\n");
}
}
/*
檢查是否消行并且進(jìn)行計(jì)分
*/
int block_clear_sort(void)
{
int x = 0, y = 0;
int ret = ERROR;
int flag = 0;
for(x = 19; x >= 0; x--)//行
{
flag = 0;
for(y = 0; y < 20; y++)
{
if(NODE_INT == back[x][y])
{
flag++;//一行的塊計(jì)數(shù)
}
if(20 == flag)//表示一行有20個(gè)方塊
{
block_clear_x(x);//消行
score++;//加分
ret = OK;
}
}
}
return ret;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)飛機(jī)票務(wù)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)飛機(jī)票務(wù)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
C++用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列(面試官的小結(jié))
這篇文章主要給大家介紹了關(guān)于C++用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列的相關(guān)資料,這是來(lái)自一名面試官的小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Win10+VS2017新CUDA項(xiàng)目配置教程
這篇文章主要為大家詳細(xì)介紹了Win10+VS2017新CUDA項(xiàng)目配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
vscode終端中打不開(kāi)conda虛擬包管理的解決
本文主要介紹了vscode終端中打不開(kāi)conda虛擬包管理的解決,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09
C++深入探索內(nèi)聯(lián)函數(shù)inline與auto關(guān)鍵字的使用
本篇文章主要包括內(nèi)聯(lián)函數(shù)和auto關(guān)鍵字。其中,內(nèi)斂函數(shù)包括概念,特性等;auto關(guān)鍵字的使用規(guī)則,使用場(chǎng)景等,接下來(lái)讓我們深入了解2022-05-05
關(guān)于C++中由于字節(jié)對(duì)齊引起內(nèi)存問(wèn)題定位分析
前幾天遇到一個(gè)稀奇古怪的問(wèn)題,在創(chuàng)建對(duì)象的時(shí)候程序異常退出,查找代碼發(fā)現(xiàn)結(jié)構(gòu)體數(shù)組問(wèn)題,最終把問(wèn)題簡(jiǎn)化得到解決方法,下面小編把我的問(wèn)題及解決方案分享到腳本之家平臺(tái)供大家參考下2021-06-06
C語(yǔ)言中結(jié)構(gòu)體(struct)的幾種初始化方法
相信大家都知道struct結(jié)構(gòu)體是C語(yǔ)言中非常重要的復(fù)合類(lèi)型,初始化的方法很多,那么小編下面對(duì)這些方法進(jìn)行總結(jié),便于自己和大家以后查閱,有需要的可以參考借鑒。2016-08-08

