android五子棋游戏源码详解_「源码分享」C++五子棋简易小游戏

本文详细介绍了如何使用C++编写一个简单的五子棋游戏,包括编码过程中的函数和变量定义、游戏初始化、界面绘制、游戏过程逻辑及鼠标点击判断。同时,展示了游戏运行的效果,并提供了代码分享。
摘要由CSDN通过智能技术生成

01

编码过程

  • 定义函数和变量
  • 游戏初始化,绘制界面
  • 游戏过程函数,绘制鼠标点击位置的棋子
  • 判断鼠标点击位置是否超出边界

02

效果展示

af2c39804bb12a53c4fefc7b5db2fe89.gif

03

代码分享

#include #include #include #include #pragma comment(lib,"winmm.lib")void initGame();//函数声明void playChess();int judge(int a, int b);int flag = 0;//标记轮到谁下棋int board[20][20] = { 0 };//0表示没有下棋的状态int main(){initGame();//函数调用,不加返回值类型和参数类型playChess();closegraph();return 0;}void initGame(){initgraph(600, 500);//绘图环境loadimage(NULL, "背景.jpg");//背景图片mciSendString("open G弦之歌.mp3", 0, 0, 0);//打开音乐mciSendString("play G弦之歌.mp3", 0, 0, 0);//播放音乐//绘制棋盘setlinecolor(BLACK);//设置线条颜色为黑色for (int i = 1; i < 20; i++){line(0, i * 25, 500, i * 25);//绘制线条line(i * 25, 0, i * 25, 500);}setlinestyle(PS_SOLID, 2);//设置线条为实线,宽度为2line(500, 0, 500, 500);//边界线outtextxy(512, 60, "玩家1:黑棋");outtextxy(512, 100, "玩家2:白棋");}void playChess(){int x=0, y=0;int a=0, b=0;MOUSEMSG m;//定义鼠标消息HWND hwnd;hwnd = GetHWnd();while (1)//实现不断下棋{m = GetMouseMsg();//获取一个鼠标消息//求距离绝对值for (int i = 1; i < 20; i++){for (int j = 1; j < 20; j++){if (abs(m.x - i * 25) < 12 && abs(m.y - j * 25) < 12){a = i;b = j;x = i * 25;y = j * 25;}}}if (m.uMsg == WM_LBUTTONDOWN)//判断当前鼠标消息是不是鼠标左键按下{if (board[a][b] != 0){MessageBox(hwnd, "这里已经有棋子了,请重新选择.", "五子棋", MB_OK);continue;}if (flag % 2 == 0){setfillcolor(BLACK);solidcircle(x, y, 10);board[a][b] = 1;}else{setfillcolor(WHITE);solidcircle(x, y, 10);board[a][b] = 2;}flag++;}if (judge(a, b)){if (1 == flag % 2){MessageBox(hwnd, "玩家1胜利", "游戏结束", MB_OK);return;//修复BUG}else{MessageBox(hwnd, "玩家2胜利", "游戏结束", MB_OK);return;//修复BUG}}}}int judge(int a, int b){int i, j;int t = 2 - flag % 2;for (i = a - 4, j = b; i <= a; i++){if (i >= 1 && i < 16 && t == board[i][j] && t == board[i + 1][j] && t == board[i + 2][j]&& t == board[i + 3][j] && t == board[i + 4][j])return 1;}for (i = a, j = b - 4; j <= b; j++){if (j >= 1 && j < 16 && t == board[i][j] && t == board[i][j + 1]&& t == board[i][j + 2] && t == board[i][j + 3] && t == board[i][j + 4])return 1;}for (i = a - 4, j = b - 4; i <= a, j <= b; i++, j++){if (i >= 1 && i < 16 && j >= 1 && j < 16 && t == board[i][j] && t == board[i + 1][j + 1] &&t == board[i + 2][j + 2] && t == board[i + 3][j + 3] && t == board[i + 4][j + 4])return 1;}for (i = a - 4, j = b + 4; i <= a, j >= b; i++, j--){if (i >= 1 && i < 16 && j >= 1 && j < 16 && t == board[i][j] && t == board[i + 1][j - 1] &&t == board[i + 2][j - 2] && t == board[i + 3][j - 3] && t == board[i + 4][j - 4])return 1;}return 0;}

更多有关C语言和C++的知识和学习资料,欢迎关注微信公众号:C语言学习基地!

package com.example.wzq; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import com.example.wzq.MyInfo.MyInfoActivity; import com.example.wzq.gameview.WzqGame; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Parcelable; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.ImageView.ScaleType; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private ViewPager viewPager; private List imageViews; //滑动的图片集合 private String[] titles;//图片标题 private int[] imageResId;//图片ID private List dots; //图片标题正文的那些点集合 private TextView tv_title; private int currentItem = 0;//当前图片的索引号 Intent intent = new Intent(); private ScheduledExecutorService scheduledExecutorService; //切换到当前显示的图片 private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { viewPager.setCurrentItem(currentItem); } }; //定义两种颜色设置 static final int COLOR1 = Color.parseColor("#787878"); static final int COLOR2 = Color.parseColor("#ffffff"); //定义四个按钮切换按钮 private Button start_btn=null; private Button bluetooth_btn=null; private Button myinfo_btn=null; private Button finish_btn=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //生成滚动图片 initImageFlow(); View view_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值