小项目

我今天分享一个小项目  用C\C++写一个老版的九缺一的拼图游戏

代码如下

/****************************************
项    目: 拼图游戏
作    者: 零起点
编译坏境: VS2015
时    间: 2017年2月9日
版    本: 1.0
****************************************/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>


#include<graphics.h>


#define N 3


#pragma comment(lib,"winmm.lib")


int main();


void output(void);
bool judge(void);
void direction(void);


int picture[N][N] = { { 0,6,5 },
{ 7,3,8 },
{ 9,4,2 } };


int sort[N][N]={ {0,2,3},
{4,5,6},
{7,8,9} };


int main()
{
char ch;
printf("\n\n\n\t\t\t┏━━━━━━━━━━┓\n");
printf("\t\t\t┃                    ┃\n");
printf("\t\t\t┃     1.开始游戏     ┃\n");
printf("\t\t\t┃     2.游戏说明     ┃\n");
printf("\t\t\t┃     3.退出游戏     ┃\n");
printf("\t\t\t┃                    ┃\n");
printf("\t\t\t┗━━━━━━━━━━┛\n");
printf("请输入:");
scanf("%c", &ch);
if (ch == '1')
{
output();
direction();
}
else if (ch == '2')
{
char ch11;
system("cls");
printf("操作说明:1.w为上\n");
printf("         2.a为左\n"); 
printf("         3.s为下\n"); 
printf("         4.d为右\n");
printf("是否进入游戏Y/N:");
//fflush(stdin);
getchar();
scanf("%c", &ch11);
if (ch11 == 'y' || ch11 == 'Y')
{
output();
direction();
}
else
exit(-1);
}
else 
exit(-1);
//scanf("%c", ch);
//output();
/*if (judge())
MessageBox(NULL, L"你赢了", L"提示", MB_OK);*/


system("pause");
return 0;
}


void output(void)
{
IMAGE jpg[9];//保存图片
initgraph(300, 303);//控制 窗口的大小
loadimage(&jpg[0], L"./images/timg_01.jpg");
loadimage(&jpg[1], L"./images/timg_02.jpg");
loadimage(&jpg[2], L"./images/timg_03.jpg");
loadimage(&jpg[3], L"./images/timg_04.jpg");
loadimage(&jpg[4], L"./images/timg_05.jpg");
loadimage(&jpg[5], L"./images/timg_06.jpg");
loadimage(&jpg[6], L"./images/timg_07.jpg");
loadimage(&jpg[7], L"./images/timg_08.jpg");
loadimage(&jpg[8], L"./images/timg_09.jpg");
for (int i = 0; i < N; ++i)
for (int j = 0; j < N; ++j)
//输出图片
switch (picture[i][j])
{
case 1:putimage(100*j, 101*i, &jpg[0]);     break;
case 2:putimage(100*j, 101 * i, &jpg[1]);   break;
case 3:putimage(100*j, 101 * i, &jpg[2]);   break;
case 4:putimage(100 * j, 101 * i, &jpg[3]);   break;
case 5:putimage(100 * j, 101 * i, &jpg[4]); break;
case 6 :putimage(100 * j, 101 * i, &jpg[5]);break;
case 7:putimage(100 * j, 101 * i, &jpg[6]);   break;
case 8:putimage(100 * j, 101 * i, &jpg[7]); break;
case 9:putimage(100 * j, 101 * i, &jpg[8]); break;
}
}


bool judge(void)
{
int sum = 0;
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
if (picture[i][j] == sort[i][j])
++sum;//统计与原图的一样的照片
}
if (sum == N*N)
return true;//如果与原图个数一样那么返回真
else
return false;//如果与原图个数不一样那么返回假
}
void direction(void)
{
int t;
int x_poy =0;
int y_poy = 0;
while (1)
{
char ch = getch();
switch (ch)
{
case 's':
case 'S':
if (y_poy - 1 != -1)
{
/*将两数交互换*/
t = picture[y_poy - 1][x_poy];
picture[y_poy - 1][x_poy] = picture[y_poy][x_poy];
picture[y_poy][x_poy] = t;
y_poy-=1;
output();//更新窗口
}
if (judge())//判断是否一样
{
MessageBox(NULL, L"你赢了", L"提示", MB_OK);//如果与原图相符就提示信息并退出程序  以下同理
exit(-1);
}
break;
case 'D':
case 'd':
if (x_poy - 1 != -1)
{
t = picture[y_poy][x_poy-1];
picture[y_poy][x_poy-1] = picture[y_poy][x_poy];
picture[y_poy][x_poy] = t;
x_poy -= 1;
output();
}
if (judge())
{
MessageBox(NULL, L"你赢了", L"提示", MB_OK);
exit(-1);
}
break;
case 'A':
case 'a':
if (x_poy + 1 != 3)
{
t = picture[y_poy][x_poy + 1];
picture[y_poy][x_poy + 1] = picture[y_poy][x_poy];
picture[y_poy][x_poy] = t;
x_poy += 1;
output();
}
if (judge())
{
MessageBox(NULL, L"你赢了", L"提示", MB_OK);
exit(-1);
}
break;
case 'w':
case 'W':
if (y_poy + 1 != 3)
{
t = picture[y_poy + 1][x_poy];
picture[y_poy + 1][x_poy] = picture[y_poy][x_poy];
picture[y_poy][x_poy] = t;
y_poy += 1;
output();
}
if (judge())
{
MessageBox(NULL, L"你赢了", L"提示", MB_OK);
exit(-1);
}
break;
default:
break;
}
}
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Processing是一种用于创建交互式艺术作品、图形和动画的开源软件和编程语言。它的小项目通常涉及创建简单的图形和动画,通过编写代码来控制图形的行为和外观。在一个小项目中,可以用Processing绘制几何图形,如矩形、圆圈和线条,也可以通过改变它们的位置、大小和颜色来创建动画效果。此外,还可以添加交互元素,比如鼠标点击或键盘输入来触发特定的行为。由于Processing具有友好的界面和简单的语法,即使是没有编程经验的人也能轻松上手。 举例来说,一个简单的Processing小项目可以是创建一个交互式的画板,通过鼠标拖动来绘制彩色线条和图案。另一个例子是制作一个简单的游戏,比如打砖块或者吃豆人,通过键盘控制游戏角色的移动并与游戏场景进行交互。还可以设计一个生成艺术图形的程序,通过改变参数来创造出各种有趣的图案和视觉效果。 在这些小项目中,通过不断地实验和调整代码,可以体验到编程的乐趣并且创造出令人惊艳的作品。同时,Processing还提供了丰富的教程和社区支持,可以帮助初学者理解编程的基本概念和技巧,从而快速掌握这个软件,进而创造出更加复杂和精美的作品。总之,Processing小项目是一个有趣而且具有教育意义的学习方式,可以让人充分体验到编程的魅力和创造的乐趣。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值