导航:首页 > 编程语言 > 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

友情链接