日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言2048项目报告,c语言----项目_小游戏2048

發(fā)布時(shí)間:2025/3/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言2048项目报告,c语言----项目_小游戏2048 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2048 小游戲 主要是針對邏輯思維的一個(gè)訓(xùn)練.

主要學(xué)習(xí)方面:1.隨機(jī)數(shù)產(chǎn)生的概率.2.行與列在進(jìn)行移動的時(shí)候幾種情況.3.messagebox的使用

#include

#include

#include

#include

using namespace std;

int board[4][4] = {0}; //二維數(shù)組

int if_need_rand; //是否生成隨機(jī)數(shù)

int if_game_over; //游戲結(jié)束

void showgame() { //打印邊框

system("cls"); //刷新屏幕

printf("┏━━━┳━━━┳━━━┳━━━┓\n");

for (int i = 0; i < 4; i++) {

printf("┃");

for (int j = 0; j < 4;j++) {

if (board[i][j]==0) {

printf(" ┃");

}

else {

printf("%3d┃",board[i][j]);

}

}

if (i<3) {

printf("\n┣━━━╋━━━╋━━━╋━━━┫\n");

}

else {

printf("\n┗━━━┻━━━┻━━━┻━━━┛\n");

}

}

}

//設(shè)計(jì)隨機(jī)數(shù)

void addrand() {

//隨機(jī)數(shù)種子

srand((unsigned)time(null));

int i, j;//行列

while (1) {

i = rand() % 4;

j = rand() % 4;

if (board[i][j]==0) {

//三目運(yùn)算符,幾率時(shí)2分之一

board[i][j] = (rand() % 3 ? 2 : 4);

break;

}

else {

continue;

}

}

}

//初始化

void initgame() {

if_need_rand = 1;

if_game_over = 0;

int i, j;

i = rand() % 4;

j = rand() % 4;

board[i][j] = 2;

//將數(shù)組內(nèi)值,賦值為0;重新初始化

for (int i = 0; i < 4; ++i) {

for (int j = 0; j < 4; j++) {

board[i][j] = 0;

}

}

addrand();

showgame();

}

//方向分為上下左右

//左移

void moveleft() {

for (int i = 0; i < 4;i++) {

for (int j = 1, k = 0; j < 4;++j) {

//先找到k項(xiàng)后面第一個(gè)不為0的項(xiàng)

if (board[i][j]!=0) {

//分為三個(gè)情況.相等,k項(xiàng)是0,不等

//相等

if (board[i][k]==board[i][j]) {

board[i][k++] <<= 1; //k++先賦值給k而后k++到下一個(gè)位置,進(jìn)行判斷

board[i][j] = 0;

if_need_rand = 1;

}else

//k項(xiàng)是0

if (board[i][k]==0) {

board[i][k] = board[i][j];

board[i][j] = 0;

if_need_rand = 1;

}

//k項(xiàng)與j項(xiàng)不等,有兩種情況,j項(xiàng)就在k項(xiàng)后邊,

//所以不能將j項(xiàng)賦值為0

else {

board[i][++k] = board[i][j];

if (j!=k) {

board[i][j] = 0;

if_need_rand = 1;

}

}

}

}

}

}

//右移

void moveringht() {

for (int i = 0; i < 4; i++) {

for (int j = 2, k = 3; j >= 0; j--) {

//先找到k項(xiàng)后面第一個(gè)不為0的項(xiàng)

if (board[i][j] != 0) {

//分為三個(gè)情況.相等,k項(xiàng)是0,不等

//相等

if (board[i][k] == board[i][j]) {

board[i][k--] <<= 1;

board[i][j] = 0;

if_need_rand = 1;

}

else

//k項(xiàng)是0

if (board[i][k] == 0) {

board[i][k] = board[i][j];

board[i][j] = 0;

if_need_rand = 1;

}

//k項(xiàng)與j項(xiàng)不等,有兩種情況,j項(xiàng)就在k項(xiàng)后邊,

//所以不能將j項(xiàng)賦值為0

else {

board[i][--k] = board[i][j];

if (j != k) {

board[i][j] = 0;

if_need_rand = 1;

}

}

}

}

}

}

//上移

void moveup() {

for (int i = 0; i < 4; i++) {

for (int j = 1, k = 0; j < 4; ++j) {

//先找到k項(xiàng)后面第一個(gè)不為0的項(xiàng)

if (board[j][i] != 0) {

//分為三個(gè)情況.相等,k項(xiàng)是0,不等

//相等

if (board[k][i] == board[j][i]) {

board[k++][i] <<= 1;

board[j][i] = 0;

if_need_rand = 1;

}

else

//k項(xiàng)是0

if (board[k][i] == 0) {

board[k][i] = board[j][i];

board[j][i] = 0;

if_need_rand = 1;

}

//k項(xiàng)與j項(xiàng)不等,有兩種情況,j項(xiàng)就在k項(xiàng)后邊,

//所以不能將j項(xiàng)賦值為0

else {

board[++k][i] = board[j][i];

if (j != k) {

board[j][i] = 0;

if_need_rand = 1;

}

}

}

}

}

}

//下移

void movedown() {

for (int i = 0; i < 4; i++) {

for (int j = 2, k = 3; j >=0; --j) {

//先找到k項(xiàng)后面第一個(gè)不為0的項(xiàng)

if (board[j][i] != 0) {

//分為三個(gè)情況.相等,k項(xiàng)是0,不等

//相等

if (board[k][i] == board[j][i]) {

board[k--][i] <<= 1;

board[j][i] = 0;

if_need_rand = 1;

}

else

//k項(xiàng)是0

if (board[k][i] == 0) {

board[k][i] = board[j][i];

board[j][i] = 0;

if_need_rand = 1;

}

//k項(xiàng)與j項(xiàng)不等,有兩種情況,j項(xiàng)就在k項(xiàng)后邊,

//所以不能將j項(xiàng)賦值為0

else {

board[--k][i] = board[j][i];

if (j != k) {

board[j][i] = 0;

if_need_rand = 1;

}

}

}

}

}

}

//查看有沒有空著的格子

int getnull() {

int n = 0;

for (int i = 0; i < 4; ++i) {

for (int j = 0; j < 4; ++j) {

if (board[i][j] == 0) {

n++;

}

}

}

return n;

}

//比較相鄰的兩個(gè)數(shù),是否相等

void gameover() {

for (int i = 0; i < 4; ++i) {

for (int j = 0; j < 3; ++j) {

if (board[i][j] == board[i][j + 1] || board[j][i] == board[j + 1][i]) {

if_game_over = 0;

return;

}

}

}

if_game_over = 1;

}

//執(zhí)行函數(shù)

void startgame() {

on:

initgame();

while (1) {

if_need_rand = 0;//首先將隨機(jī)值設(shè)為0.

switch (_getch())

{

case 'a':

case 'a':

case 75:

moveleft();

break;

case 'd':

case 'd':

case 77:

moveringht();

break;

case 'w':

case 'w':

case 72:

moveup();

break;

case 's':

case 's':

case 80:

movedown();

default:

break;

}

if (if_need_rand) {

addrand();

showgame();

}

//游戲判斷

if (getnull()==0) {

gameover();

if (if_game_over) {

if (messagebox(null,l"是否重來一局!",l"游戲結(jié)束",mb_yesno)==idyes) {

goto on;

}

else {

return;

}

}

}

}

}

int main() {

startgame();

return 0;

}

總結(jié)

以上是生活随笔為你收集整理的c语言2048项目报告,c语言----项目_小游戏2048的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。