導航:首頁 > 編程語言 > c拼圖代碼

c拼圖代碼

發布時間:2024-10-24 07:14:24

A. 求C語言小游戲源程序

新手要方便寫代碼,可以收藏下面幾個自編函數:

  1. gtxy (6, 3) //游標定位於窗口的第6列,第3行處(准備輸出,行與列都是從0算起)

  2. Color (4, 0) //設置為紅字配黑底 如 Color (10, 0)則是淡綠字配黑底

  3. yinc (1,0) //隱藏游標(第二個參數設為0就隱藏,沒有游標閃爍,yinc代表隱藏)

  4. kou(80,25) //設定窗口緩沖區大小為80列,25行

    下面幾個是庫函數,不需自己編寫,只要用#include包含就可以使用。

  5. SetConsoleTitle("俄羅斯方塊"); //設置窗口左上角標題欄處出現"俄羅斯方塊"5個字

  6. srand( (unsigned) time(NULL) ); //初始化隨機數發生器

  7. n= rand( ) % 20; //產生隨機數0-19中的一個. 如 rand( )%5 就產生0-4中的一個數

    SetConsoleTitle( )函數在<windows.h>里,srand( )函數與rand( )函數要配合用,

    就是同時要用,在<stdlib.h>里。如果 rand( )%10+1 就產生1-10之中的一個數。

  8. Sleep(300); //延時300毫秒(就是程序暫停300毫秒後繼續運行)

  9. system("cls"); //清屏(把窗口裡的內容全部清除,游標定於(0,0)位置處)

    這兩個函數都在<windows.h>里。開頭4個自編函數 編寫如下:

void gtxy (int x, int y) //控制游標位置的函數

{ COORD pos;

pos.X = x;

pos.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

}

void Color (short ForeColor= 7, short BackGroundColor= 0) //設定顏色的函數

{ HANDLE hl = GetStdHandle ( STD_OUTPUT_HANDLE );

SetConsoleTextAttribute ( hl, ForeColor + BackGroundColor * 0x10 );

}

聲明時原型可寫 void Color (short x, short y);

void yinc (int x,int y) //隱藏游標的函數

{ CONSOLE_CURSOR_INFO gb={ x , y }; //gb代表游標

SetConsoleCursorInfo ( GetStdHandle(STD_OUTPUT_HANDLE), &gb );

}

void kou(int w,int h) //設置窗口大小的函數

{HANDLE hl=GetStdHandle ( STD_OUTPUT_HANDLE ) ;

COORD size={ w , h };

SetConsoleScreenBufferSize( hl , size );

SMALL_RECT rc={ 0, 0, w, h };

SetConsoleWindowInfo( hl, 1, &rc );

}

最後這個函數,參數w是寬h是高。里邊5行中第一行定義了句柄型變數hl,並給它賦值。

第二行定義了坐標型結構體變數size,它的取值決定了緩沖區的大小。第三行就是使用

size的值設置好緩沖區大小。第四行定義了變數rc,它的值決定當前窗口顯示的位置與

大小(不得超過緩沖區的大小)。前兩個0,0是從緩沖區左上角0列0行位置處開始,後兩

個參數可以小於w和h.比如rc={0,0,w-10,h-5}; 最後一行使用rc的值設置好窗口,中間

那個參數要為" 1 "或寫「 true 」才有效。

B. C語言源代碼是什麼

數字版「拼圖」游戲C源代碼:

#include<time.h>

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<windows.h>

int i, j, r, k; //i、j、r用於循環, k存放隨機數值


int m, n; // m、n是當前空位的下標, t標記排序是否成功

int a[4][4]; //存儲4×4共16個數字的數組

void show(void); //輸出數組表格

void csh(void); //初始化界面

int yes(void); //判斷排序是否成功

void up(void); //數字向上移動到空位(空位則下移)

void down(void); //數字向下移

void left(void); //數字向左移

void rght(void); //數字向右移

void inkey(void); //按鍵操作

void gtxy(int x, int y) ; //控制游標移動的函數

int main(void)

{ while(1)

{csh( );

while(1)

{ inkey();

show();

if ( yes( ) )

{gtxy(6,12); printf("你成功了! 再來一局y/n?"); break;}

}

if(getch( )== ʹnʹ)break;

}

return 0;

}

void csh(void)

{r=0;

CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下兩行是隱藏游標的設置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<4;i++) //給數組a依序賦值

for(j=0;j<4;j++)
{ if (i==3 && j==3) a[i][j]=0;
else a[i][j]=1+r++;
}

a[3][3]=a[1][1]; a[1][1]=0; //把a[3][3]與a[1][1]的值交換一下

m=1; n=1;

srand((unsigned)time(0)); //初始化隨機數發生器

for(r=0;r<500;r++) //將數組各值打亂
{k=rand( )%(4); //取0-3隨機數,分別代表上下左右四個方向
switch(k)
{ case 0: { up( );break; }
case 1: {down( );break; }
case 2: {left( );break; }
case 3: {rght( ); break; }
}
}

printf(" 數字拼圖");

printf(" ┌──────┬──────┬──────┬──────┐");

printf(" │ │ │ │ │");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │ │ │ │ │");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │ │ │ │ │");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │ │ │ │ │");

printf(" └──────┴──────┴──────┴──────┘");
show( );
}

void show(void)

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

for(j=0;j<4;j++) //gtxy(7*j+9, 2*i+4)是游標到指定位置輸出數字

{gtxy(7*j+9,2*i+4); if(a[i][j]==0)printf(" │");

else if(a[i][j]>9)printf(" %d │",a[i][j]);

else printf(" %d │",a[i][j]);

}

}

void inkey(void)

{ int key;

key=getch( );
switch(key)
{ case 72: { up( ); break;}
case 80: {down( ); break; }
case 75: {left( ); break; }
case 77: {rght( );break;}
}
}

void up(void)

{ if (m!=3) //移動時要考慮空位"0"是否已經在邊界
{ a[m][n]=a[m+1][n]; m++; a[m][n]=0; }
}


void down(void)

{ if (m!=0)
{a[m][n]=a[m-1][n]; m--; a[m][n]=0; }
}

void left(void)

{ if (n!=3)
{ a[m][n]=a[m][n+1]; n++; a[m][n]=0;}
}
void rght(void)

{ if (n!=0)
{ a[m][n]=a[m][n-1]; n--; a[m][n]=0; }
}

int yes(void)

{ r=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{ if (a[i][j]!=1+r++) return (r==16)?1:0; }
}

void gtxy(int x, int y) //控制游標移動的函數

{ COORD coord;

coord.X = x;

coord.Y = y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

C. 誰有能在vc++6.0上運行的c語言小游戲代碼

學習一下數字版「拼圖」代碼寫法:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<time.h>

#include<windows.h>


inti,j,r,k;//i、j、r用於循環,k存放隨機數值

intm,n;//m、n是當前空位的下標,t標記排序是否成功

inta[4][4];//存儲4×4共16個數字的數組

voidshow(void);//輸出數組表格

voidcsh(void);//初始化界面

intyes(void);//判斷排序是否成功

voip(void);//數字向上移動到空位(空位則下移)

voiddown(void);//數字向下移

voidleft(void);//數字向左移

voidrght(void);//數字向右移

voidinkey(void);//按鍵操作

voidgtxy(intx,inty);//控制游標移動的函數


intmain(void)

{while(1)

{csh();

while(1)

{inkey();

show();

if(yes())

{gtxy(6,12);printf("你成功了!再來一局y/n?");break;}

}

if(getch()==『n』)break;

}

return0;

}

voidcsh(void)//初始化

{r=0;

CONSOLE_CURSOR_INFOcursor_info={1,0};//以下兩行是隱藏游標的設置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<4;i++)//給數組a依序賦值

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

{if(i==3&&j==3)a[i][j]=0;

elsea[i][j]=1+r++;

}

a[3][3]=a[1][1];a[1][1]=0;//把a[3][3]與a[1][1]的值交換一下

m=1;n=1;

srand((unsigned)time(0));//初始化隨機數發生器

for(r=0;r<500;r++)//將數組各值打亂

{k=rand()%(4);

switch(k)

{case0:{up();break;}

case1:{down();break;}

case2:{left();break;}

case3:{rght();break;}

}

}

printf(" 數字拼圖");

printf(" ┌──────┬──────┬──────┬──────┐");

printf(" │││││");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │││││");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │││││");

printf(" ├──────┼──────┼──────┼──────┤");

printf(" │││││");

printf(" └──────┴──────┴──────┴──────┘");

show();

}

voidshow(void)//輸出表格與數字

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

for(j=0;j<4;j++)//gtxy(7*j+9,2*i+4)是游標到指定位置輸出數字

{gtxy(7*j+9,2*i+4);if(a[i][j]==0)printf("│");

elseif(a[i][j]>9)printf("%d│",a[i][j]);

elseprintf("%d│",a[i][j]);

}

}

voidinkey(void)//按鍵操作

{intkey;

key=getch();

switch(key)

{case72:{up();break;}

case80:{down();break;}

case75:{left();break;}

case77:{rght();break;}

}

}


voip(void)

{if(m!=3)//空位不得在下邊界

{a[m][n]=a[m+1][n];m++;a[m][n]=0;}

}


voiddown(void)

{if(m!=0)//空位不得在上邊界

{a[m][n]=a[m-1][n];m--;a[m][n]=0;}

}

voidleft(void)

{if(n!=3)//空位不得在右邊界

{a[m][n]=a[m][n+1];n++;a[m][n]=0;}

}

voidrght(void)

{if(n!=0)//空位不得在左邊界

{a[m][n]=a[m][n-1];n--;a[m][n]=0;}

}

intyes(void)//判斷是否成功(1是0否)

{r=0;

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

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

{if(a[i][j]!=1+r++)return(r==16)?1:0;}

}

voidgtxy(intx,inty)//控制游標移動的函數

{COORDcoord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);

}

D. 求一java拼圖源程序

package love;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.*;

public class Games extends JFrame implements ActionListener {
private JButton buttons[][];// 存儲按鍵的數組

private Container container;// 一個容器

private GridLayout layout;// 布局方式為GridLayout

private int count = 0, is[] = new int[8];// count的作用是計算按鍵移動的次數,is[]儲存一個隨機產生的1到8數字數組

public Games() {
super("拼圖游戲");// 設置標題
layout = new GridLayout(3, 3);// 3行3列
container = getContentPane();// 該容器的布局方式,及其重要,否則產生空引用異常
container.setLayout(layout);// 將該布局方式作用於容器
buttons = new JButton[3][3];// 給按鍵數組分配儲存空間
int locate1, locate2;// locate1用來指示當前產生的元素 locate2用來指示locate1之前的元素
for (locate1 = 0; locate1 < 8; locate1++) {// 該方法作用是產生1到8這8個數,隨機分配給數組,即無序排列
int g = new Random().nextInt(8) + 1;// 隨機產生一個空白按鍵,即不顯示的那個
is[locate1] = g;
for (locate2 = locate1 - 1; 0 <= locate2; locate2--) {
if (is[locate1] == is[locate2])
break;
}

if (locate2 != -1)
locate1--;
}
int temp = 0;
int r = new Random().nextInt(3);// 隨機產生一個0到3的數,代表空白按鍵的行
int l = new Random().nextInt(3);// 隨機產生一個0到3的數,代表空白按鍵的列
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (r == i && l == j) {// 空白按鍵設置為9,不顯示
buttons[i][j] = new JButton("9");
container.add(buttons[i][j]);
buttons[i][j].setVisible(false);
} else {
buttons[i][j] = new JButton("" + is[temp++]);// 將數組數組的值作為顯示的8個按鍵的名字
container.add(buttons[i][j]);
}
buttons[i][j].addActionListener(this);// 注冊監聽事件
}
}
setSize(300, 300);// 設置顯示容器區域大小
setVisible(true);

}

public void actionPerformed(ActionEvent event) {// 事件處理,由於計算量小該處將所有按鍵單獨分析
JButton b = (JButton) event.getSource();
if (b == buttons[0][0]) {
if (buttons[0][1].getText().equals("9")) {
buttons[0][1].setText("" + buttons[0][0].getText());
buttons[0][1].setVisible(true);
buttons[0][0].setText("9");
buttons[0][0].setVisible(false);
count++;
} else if (buttons[1][0].getText().equals("9")) {
buttons[1][0].setText("" + buttons[0][0].getText());
buttons[1][0].setVisible(true);
buttons[0][0].setText("9");
buttons[0][0].setVisible(false);
count++;
}
}

else if (b == buttons[0][1]) {
if (buttons[0][0].getText().equals("9")) {
buttons[0][0].setText("" + buttons[0][1].getText());
buttons[0][0].setVisible(true);
buttons[0][1].setText("9");
buttons[0][1].setVisible(false);
count++;
} else if (buttons[0][2].getText().equals("9")) {
buttons[0][2].setText("" + buttons[0][1].getText());
buttons[0][2].setVisible(true);
buttons[0][1].setText("9");
buttons[0][1].setVisible(false);
count++;
} else if (buttons[1][1].getText().equals("9")) {
buttons[1][1].setText("" + buttons[0][1].getText());
buttons[1][1].setVisible(true);
buttons[0][1].setText("9");
buttons[0][1].setVisible(false);
count++;
}

} else if (b == buttons[0][2]) {
if (buttons[0][1].getText().equals("9")) {
buttons[0][1].setText("" + buttons[0][2].getText());
buttons[0][1].setVisible(true);
buttons[0][2].setText("9");
buttons[0][2].setVisible(false);
count++;
} else if (buttons[1][2].getText().equals("9")) {
buttons[1][2].setText("" + buttons[0][2].getText());
buttons[1][2].setVisible(true);
buttons[0][2].setText("9");
buttons[0][2].setVisible(false);
count++;
}

} else if (b == buttons[1][0]) {
if (buttons[0][0].getText().equals("9")) {
buttons[0][0].setText("" + buttons[1][0].getText());
buttons[0][0].setVisible(true);
buttons[1][0].setText("9");
buttons[1][0].setVisible(false);
count++;
} else if (buttons[1][1].getText().equals("9")) {
buttons[1][1].setText("" + buttons[1][0].getText());
buttons[1][1].setVisible(true);
buttons[1][0].setText("9");
buttons[1][0].setVisible(false);
count++;
} else if (buttons[2][0].getText().equals("9")) {
buttons[2][0].setText("" + buttons[1][0].getText());
buttons[2][0].setVisible(true);
buttons[1][0].setText("9");
buttons[1][0].setVisible(false);
count++;
}

} else if (b == buttons[1][1]) {
if (buttons[0][1].getText().equals("9")) {
buttons[0][1].setText("" + buttons[1][1].getText());
buttons[0][1].setVisible(true);
buttons[1][1].setText("9");
buttons[1][1].setVisible(false);
count++;
} else if (buttons[1][0].getText().equals("9")) {
buttons[1][0].setText("" + buttons[1][1].getText());
buttons[1][0].setVisible(true);
buttons[1][1].setText("9");
buttons[1][1].setVisible(false);
count++;
} else if (buttons[1][2].getText().equals("9")) {
buttons[1][2].setText("" + buttons[1][1].getText());
buttons[1][2].setVisible(true);
buttons[1][1].setText("9");
buttons[1][1].setVisible(false);
count++;
} else if (buttons[2][1].getText().equals("9")) {
buttons[2][1].setText("" + buttons[1][1].getText());
buttons[2][1].setVisible(true);
buttons[1][1].setText("9");
buttons[1][1].setVisible(false);
count++;
}

} else if (b == buttons[1][2]) {
if (buttons[0][2].getText().equals("9")) {
buttons[0][2].setText("" + buttons[1][2].getText());
buttons[0][2].setVisible(true);
buttons[1][2].setText("9");
buttons[1][2].setVisible(false);
count++;
} else if (buttons[2][2].getText().equals("9")) {
buttons[2][2].setText("" + buttons[1][2].getText());
buttons[2][2].setVisible(true);
buttons[1][2].setText("9");
buttons[1][2].setVisible(false);
count++;
} else if (buttons[1][1].getText().equals("9")) {
buttons[1][1].setText("" + buttons[1][2].getText());
buttons[1][1].setVisible(true);
buttons[1][2].setText("9");
buttons[1][2].setVisible(false);
count++;
}

} else if (b == buttons[2][0]) {
if (buttons[1][0].getText().equals("9")) {
buttons[1][0].setText("" + buttons[2][0].getText());
buttons[1][0].setVisible(true);
buttons[2][0].setText("9");
buttons[2][0].setVisible(false);
count++;
} else if (buttons[2][1].getText().equals("9")) {
buttons[2][1].setText("" + buttons[2][0].getText());
buttons[2][1].setVisible(true);
buttons[2][0].setText("9");
buttons[2][0].setVisible(false);
count++;
}
}

else if (b == buttons[2][1]) {
if (buttons[2][0].getText().equals("9")) {
buttons[2][0].setText("" + buttons[2][1].getText());
buttons[2][0].setVisible(true);
buttons[2][1].setText("9");
buttons[2][1].setVisible(false);
count++;
} else if (buttons[2][2].getText().equals("9")) {
buttons[2][2].setText("" + buttons[2][1].getText());
buttons[2][2].setVisible(true);
buttons[2][1].setText("9");
buttons[2][1].setVisible(false);
count++;
} else if (buttons[1][1].getText().equals("9")) {
buttons[1][1].setText("" + buttons[2][1].getText());
buttons[1][1].setVisible(true);
buttons[2][1].setText("9");
buttons[2][1].setVisible(false);
count++;
}

} else if (b == buttons[2][2]) {
if (buttons[2][1].getText().equals("9")) {
buttons[2][1].setText("" + buttons[2][2].getText());
buttons[2][1].setVisible(true);
buttons[2][2].setText("9");
buttons[2][2].setVisible(false);
count++;
} else if (buttons[1][2].getText().equals("9")) {
buttons[1][2].setText("" + buttons[2][2].getText());
buttons[1][2].setVisible(true);
buttons[2][2].setText("9");
buttons[2][2].setVisible(false);
count++;
}

}
if (buttons[0][0].getText().equals("1")// 假如1到8已經排列完成,則執行該語句
&& buttons[0][1].getText().equals("2")
&& buttons[0][2].getText().equals("3")
&& buttons[1][0].getText().equals("4")
&& buttons[1][1].getText().equals("5")
&& buttons[1][2].getText().equals("6")
&& buttons[2][0].getText().equals("7")
&& buttons[2][1].getText().equals("8")) {
JOptionPane.showMessageDialog(null, "您一共花費了" + count + "步完成了游戲!");// 彈出對話框,顯示共移動步數
System.exit(0);// 退出程序
}

}

public static void main(String[] args) {
Games game = new Games();
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

閱讀全文

與c拼圖代碼相關的資料

熱點內容
手機無線網路用不了怎麼辦 瀏覽:343
文件以圖片的方式加密 瀏覽:646
基於stm32的電子密碼鎖 瀏覽:370
簡白文件夾 瀏覽:320
rif文件在哪裡打開 瀏覽:279
悅跑圈app閃退 瀏覽:311
如何找網路男神 瀏覽:208
js外部讀取函數返回的字元串 瀏覽:90
7z文件格式修復 瀏覽:684
無法顯示此圖片該文件是空的 瀏覽:586
金一微信 瀏覽:303
微信緩存高清頭像文件怎麼命名的 瀏覽:242
怎樣將電腦上的文件傳到手機微信 瀏覽:82
無聊沒有網路做什麼 瀏覽:557
如何設置電腦用戶賬號和密碼忘了怎麼辦 瀏覽:390
精雕路徑文件格式不匹配 瀏覽:166
廣電網路寬頻VPIVCI 瀏覽:734
王者榮耀升級失敗 瀏覽:474
win7桌面文件的路徑 瀏覽:765
蘋果5s主板充電電路壞 瀏覽:474

友情鏈接