2048(已更新,所有bug均已修復)【更美觀的外形】
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<windows.h> #include<conio.h> int i,j,M[100][100],ans; void Disgm(){ for (i=0;i<=5;i++){ M[i][0]=1; M[0][i]=1; M[i][5]=1; M[5][i]=1; } } int pd(){ for (i=1;i<=4;i++) for (j=1;j<=4;j++) if (!M[i][j]) return 1; return 0; } void DisP(){ int tx=rand()%4+1; int ty=rand()%4+1; int num=rand()%2+1; num*=2; if (pd()){ while (M[tx][ty]) { tx=rand()%4+1; ty=rand()%4+1; } M[tx][ty]=num; } } void up(){ for (i=1;i<=4;i++) for (j=1;j<=4;j++) if (M[i][j]){ int u=i,v=j; while (M[u][v]==M[u-1][v] || M[u-1][v]==0){ if (M[u-1][v]==0) { M[u-1][v]=M[u][v]; M[u][v]=0; } else if (M[u-1][v]==M[u][v]) { M[u-1][v]*=2; M[u][v]=0; ans+=M[u-1][v]; } u--; } } } void down(){ for (i=1;i<=4;i++) for (j=1;j<=4;j++) if (M[i][j]){ int u=i,v=j; while (M[u][v]==M[u+1][v] || M[u+1][v]==0){ if (M[u+1][v]==0) { M[u+1][v]=M[u][v]; M[u][v]=0; } else if (M[u+1][v]==M[u][v]) { M[u+1][v]*=2; M[u][v]=0; ans+=M[u+1][v]; } u++; } } } void left(){ for (i=1;i<=4;i++) for (j=1;j<=4;j++) if (M[i][j]){ int u=i,v=j; while (M[u][v]==M[u][v-1] || M[u][v-1]==0){ if (M[u][v-1]==0) { M[u][v-1]=M[u][v]; M[u][v]=0; } else if (M[u][v-1]==M[u][v]) { M[u][v-1]*=2; M[u][v]=0; ans+=M[u][v-1]; } v--; } } } void right(){ for (i=1;i<=4;i++) for (j=1;j<=4;j++) if (M[i][j]){ int u=i,v=j; while (M[u][v]==M[u][v+1] || M[u][v+1]==0){ if (M[u][v+1]==0) { M[u][v+1]=M[u][v]; M[u][v]=0; } else if (M[u][v+1]==M[u][v]) { M[u][v+1]*=2; M[u][v]=0; ans+=M[u][v+1]; } v++; } } } void Play(){ char key; do { key=getch(); }while (key!='w' && key!='s' && key!='a' && key!='d'); if (key=='w') up(); if (key=='s') down(); if (key=='a') left(); if (key=='d') right(); DisP(); } void Print(){ for (i=1;i<=26;i++) printf("#"); puts(""); for (i=1;i<=4;i++,printf(" #"),puts("")){ printf("# "); for (j=1;j<=4;j++) printf("%5d",M[i][j]); } for (i=1;i<=26;i++) printf("#"); puts(""); printf("score:%d\n",ans); } int GameOver(){ for (i=1;i<=4;i++) for (j=1;j<=4;j++) if (M[i][j]==M[i-1][j] || M[i][j]==M[i+1][j] || M[i][j]==M[i][j-1] || M[i][j]==M[i][j+1]) return 0; return 1; } int main(){ puts("遊戲名稱:2048"); getch(); puts(""); puts("遊戲目標:略"); getch(); puts(""); puts("遊戲規則:略"); getch(); puts(""); puts("By steven_cnyali"); getch(); puts(""); system("cls"); for (i=3;i>=1;i--) { printf("遊戲即將開始...(%d)",i); Sleep(1000); system("cls"); } Disgm(); DisP(); Print(); while (!GameOver()){ Play(); system("cls"); Print(); } system("cls"); puts("Game Over!"); system("pause"); return 0; }
相關推薦
2048(已更新,所有bug均已修復)【更美觀的外形】
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<windows.h> #include<conio.h> int i,j,M[100][
各種模板(不斷更新,因為學習是永無止境的)
int sin class insert fff com spfa 排隊 getc Tarjan模板 1 #include<complex> 2 #include<cstdio> 3 using namespace std; 4 const
leetcode:Remove Nth Node From End of List(刪除連結串列倒數第n個節點)【面試演算法題】
題目: Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2->
樹狀陣列單點更新和區間更新,二維陣列poj2155(區間更新,單點查詢)(已加入區間修改區間查詢)
普通的樹狀陣列C[i]=a[i]+a[i-1]+...a[i-2^k+1]+...+a[1]; 但是所有樹狀陣列都是向上更新,向下求和。 1)、單點增減+區間求和 思路:C[x]表示該點的元素:sum(x)=C[1]+C[2]+……C[x] [cpp] view p
降階法計算行列式方法有個地方有Bug(原文也已更正,此為更正後部分)
今天用此函式做方程求解時發現有誤,特此更正:/// <summary> /// 降階法計算行列式 /// </summary> /// <param name="Determinants">N
ng-class的問題(已解決,未找到真正的原因)
判斷 問題 light 嘗試 後來 功能 log blog ng-class 問題來源是,在做點擊選中的功能時候遇到的,之前是用js來寫實現了,在改變之後用ng來寫之後 ng-class="select_x select_qz {{i == $index ? ‘selec
著名的3像素Bug(div+img,多出幾像素)
AR com www ott baidu pla .... play tps <div><img src="...."></div> 給img的css設置display: block;/*用來去除div下邊莫名多出來的3px的像pa
Pod控制器應用進階四(Pod更新,擴縮容)
vim deploy-demo.yaml [[email protected] test]# cat deploy-demo.yaml apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deploy name
有關IOS開發寫的好的部落格和網站(持續更新,含盲點)
1. Swift中的trim方法處理字串:http://www.hangge.com/blog/cache/detail_1649.html 2. Swift語言中的@available和#available https://blog.csdn.net/offbye/article/deta
資料庫批量操作(批量更新,批量插入)
資料庫的批量操作 為了儘可能提高我們的sql執行效率,一般我們針對多條資料的操作,使用批量更新或者批量插入的方式 方式如下: --批量插入 <insert id="saveUserList" parameterType="java.util.List">
字典樹模板(有待更新,連結串列版)
連結串列版:空間小,時間大。 陣列版:空間大,時間小 struct node { int num; node *next[maxn]; }; //字典樹 class Tree{ public: node *head; //建構函式 Tree() {
你不知道的CSS常用屬性(不斷更新,未完待續)
顏色 HEX(16進位制色:color:#FFF000)。 RGB(紅綠藍:color:rgb(255,255,0)或color:rgb(100%,100%,20%))。 RGBA(紅綠藍透明度:color:rgba(255,255,0,0.5)。 HSL(
現學現用之windbg的高階玩法(1,3,5,13,14,76,80,81,84,118,119,121,122樓已更新,chm文件整合7篇實戰18個輔助工具)
windbg用的人很少,通常被用作核心偵錯程式。 這對於windbg來說,確實大大限制了windbg的功能發揮。 因為工作的關係,樓主常常需要遠端除錯和到客戶現場排查問題。需要一款順手的偵錯程式。VC由於太大,安裝也麻煩,不能每次都給給客戶安裝一個VC,OD是一款很好的使用者態偵錯程式,但是對pdb支援的不好
線段樹模板(區間更新,區間求和,區間最值)
線段樹模板 #include <iostream> #include <stdio.h> #define ll long long #define lson l, mid, rt << 1 #define rson mid +
ios 企業證書明明已更新,我的手機可以下載,其他使用者都下載不了,填坑
前言:企業 $299的賬號遇到的問題。事情的經過是這樣的~ 上週五的晚上,同事在微信群裡說我們的app下載不了了,他們都試過了都是一團黑乎乎的在那,一直不動呢。what~!!額~怎麼可能上個星期還可以下載的呀,而且證書早就更新過了,怎麼會呢!於是我自己手機掃描下
js正則表示式校驗值是否為一個數字(正負整數,正負小數均可校驗)
百度了很多給出的正則清一色都是 /^[0-9]+.?[0-9]*$/ 但是經過實測此正則表示式是不完全正確的 所以自己測試並寫了新的校驗是否為數字的正則表示式,經自己測試,正負正數,正負小數均能正確判斷 /(^[\-0-9][0-9]*(.[0-9]+)?
UVA - 10020 Minimal coverage (區間更新,貪心)
Minimal coverage The Problem Given several segments of line (int the X axis) with coordinates [Li,Ri]. You are to choose the minimal a
線段樹大模板(區間更新,單點更新,查詢區間最值等等)
#include <bits/stdc++.h> #define MAXN 100010 #define inf 0x3f3f3f3f using namespace std; struct node{ int l,r;//區間[l,r
windows7下的docker的安裝及使用(持續更新,未完待續,每天一點點)
1.驗證電腦是否支援docker docker需要支援微軟的硬體虛擬化技術,且windows10只支援專業版(由於不用windows10請自行百度吧),windows10的安裝和windows7不同,windows7,8需要Toolbox,而windows10不用
ElasticSearch從入門到精通,史上最全(持續更新,未完待續,每天一點點)
1.ElasticSearch的簡介 ElasticSearch:智慧搜尋,分散式的搜尋引擎 是ELK的一個組成,是一個產品,而且是非常完善的產品,ELK代表的是:E就是ElasticSearch,L就是Logstach,K就是kibana E:EalsticSea