C语言实现骑士飞行棋

本文实例为大家分享了C语言实现骑士飞行棋的具体代码,供大家参考,具体内容如下

/* Author Mr.Long
 * Date  2015年12月2日17:33:17
 */
#include<iostream>
#include<string>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand()%x)

using namespace std;

string player[2]={"玩家A","玩家B"};
int map[100];
int playerPos[2]={0,0};
int gamePlayer = 0;
bool isGameOver = false;
int winer = -1;
int pausePlayer = -1;
//0□正常 1☆幸运轮盘  2◎地雷  3△暂停  4卍时空隧道
 string getLogo(int pos){ 

 string res = "□";
 if((playerPos[0] == pos) && (playerPos[1] == pos)){
 res = "<>";
 }else if(playerPos[0]==pos){
  res = "A";
 }else if(playerPos[1]==pos){
  res = "B";
 }else{
  switch(map[pos]){
  case 1:
   res = "☆"; // 幸运轮盘
   break;
  case 2:
   res = "◎"; // 地雷
   break;
  case 3:
   res = "△"; // 暂停
   break;
  case 4:
   res = "卍"; // 时空隧道
   break;
  }
 }
 return res;
 }
 void drowMap(){ //绘制地图 

 for(int i = 0;i<=29;++i){
  cout<<getLogo(i);
 }
 cout<<endl;
 for(int i = 30;i<=34;++i){
 for(int j = 0;j<=28;j++){
  cout<<" ";
 }
  cout<<getLogo(i)<<endl;;
 }
 for(int i =64;i>=35;i--){
 cout<<getLogo(i);
 }
 cout<<endl;
 for(int i = 65;i<=69;++i){
 cout<<getLogo(i)<<endl;
 }
 for(int i = 70;i<=99;i++){
  cout<<getLogo(i);
 }
 cout<<endl;
 cout<<"地图说明:【☆幸运轮盘  卍时空隧道  ◎地雷  △暂停  <>玩家同处一个位置】"<<endl;
 }
 void gameOver(){ //游戏结束
 isGameOver = true;
 winer = gamePlayer;
 playerPos[gamePlayer]=99;
 system("cls");
 drowMap();
 cout<<"***游戏结束!恭喜["<<player[gamePlayer]<<"]取得胜利!"<<endl;
 system("PAUSE");
 }
 void initMap(){ //初始化地图
 int luckyTurn[] = {6,23,40,55,69,83};//幸运轮盘1
 int landMine[] = {5,13,17,33,38,50,64,80,94};//地雷2
 int pause[] = {9,27,60,93};//暂停3
 int timeTunnel[] = {20,25,45,63,72,88,90};//时空隧道4
 int i;
 for(i =0;i<6;++i){
  int pos = luckyTurn[i];
  map[pos] = 1;
 }
 for(i =0;i<9;++i){
  int pos = landMine[i];
  map[pos] = 2;
 }
 for(i =0;i<4;++i){
  int pos = pause[i];
  map[pos] = 3;
 }
 for(i =0;i<7;++i){
  int pos = timeTunnel[i];
  map[pos] = 4;
 }
 }
 void initUI(){ //初始化界面 

 cout<<"*******************小游戏*****************"<<endl;
 cout<<"*                    *"<<endl;
 cout<<"*        骑士飞行棋       *"<<endl;
 cout<<"*                    *"<<endl;
 cout<<"****************@诗意的叛逆***************"<<endl;
 }
 void joinPlayer(){ //加入玩家 

 string tmpStr = "";
 cout<<"请输入玩家A的名字___" <<endl;
 cin>>tmpStr;
 while(tmpStr==""){
 cout<<"玩家名字不能为空请重新输入___" <<endl;
 cin>>tmpStr;
 }
 player[0] = "A" + tmpStr;

 cout<<"请输入玩家B的名字___" <<endl;
 cin>>tmpStr;
 while(tmpStr==""){
 cout<<"玩家名字不能为空请重新输入___" <<endl;
 cin>>tmpStr;
 }
 while(tmpStr == player[0]){
 cout<<"玩家名字不能重复,请重新输入___" <<endl;
 cin>>tmpStr;
 }
 player[1] = "B" + tmpStr;
 system("cls");
 cout<<"***玩家加入成功..."<<endl;
 cout<<"***地图中[A]表示玩家["<<player[0]<<"]的位置..."<<endl;
 cout<<"***地图中[B]表示玩家["<<player[1]<<"]的位置..."<<endl;
 }
 void yaoYiYao(){ //投掷骰子 

 short number = 0;
 while(!isGameOver){
  char a;
  cout<<"***请["<<player[gamePlayer]<<"]输入g投掷骰子..."<<endl;
 cin>>a;
  if(a=='g'){
  system("cls");
  number = random(6)+1;
  cout<<"***玩家["<<player[gamePlayer]<<"]投掷的骰子数为:"<<number<<endl;
  playerPos[gamePlayer] += number;
  int pos = playerPos[gamePlayer];
  if(pos >=99){
  gameOver();
  }else{
  switch(map[pos]){
  case 0:
   if(pausePlayer = -1){
   gamePlayer = !gamePlayer;
   }else if(pausePlayer = 0){
   pausePlayer++;
   }else if(pausePlayer = 1){
   pausePlayer = -1;
   }
   break;
  case 1:
   int cnumber;
   cout<<"***哇哦!玩家["<<player[gamePlayer]<<"]获得幸运转一转的机会..."<<endl;
   cout<<"***请输入数字选择要进行的操作...."<<endl;
   cout<<"1--与对方交换位置"<<endl<<"2--轰炸对方"<<endl;
   cin>>cnumber;
   if(cnumber == 1){
    int t = 0;
    t = playerPos[gamePlayer];
    playerPos[gamePlayer] = playerPos[!gamePlayer];
    playerPos[!gamePlayer] = t;
   }else if(cnumber == 2){
    playerPos[!gamePlayer] -=6 ;
   }else{
    cout<<"输入非规定数字!机会丢失。"<<endl;
   }
   gamePlayer = !gamePlayer;
   break;
  case 2:
   cout<<"***啊哦!玩家["<<player[gamePlayer]<<"]踩到地雷啦,后退6步..."<<endl;
   playerPos[gamePlayer] -= 6;
   gamePlayer = !gamePlayer;
   break;
  case 3:
   cout<<"***悲剧呀!玩家["<<player[gamePlayer]<<"]暂停投掷一次..."<<endl;
   pausePlayer = 0;
   gamePlayer = !gamePlayer;
   break;
  case 4:
   cout<<"***真棒!玩家["<<player[gamePlayer]<<"]穿越时空隧道..."<<endl;
   playerPos[gamePlayer] += 10;
   if(playerPos[gamePlayer]>=99){
   gameOver();
   }
   gamePlayer = !gamePlayer;
   break;
  }
  }
 }else if(a == 'a'){
  winer = 0;
  gameOver();
 }else if(a == 'b'){
  winer = 1;
  gameOver();
 }
 for(int i=0;i<=1;i++){
  if(playerPos[i]<0)
  playerPos[i] = 0;
 }
 if(!isGameOver){
  drowMap();
 }
 }
 }

 int main(){
 srand((unsigned)time(NULL));

 initUI();
 cout<<"***开始初始化玩家设置..."<<endl;
 joinPlayer();
 initMap();
 drowMap();
 cout<<"***本场游戏开始:["<<player[0]<<"] VS ["<<player[1]<<"]"<<endl;
 gamePlayer = random(2);
 yaoYiYao();
 return 0;
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 基于C语言实现五子棋游戏完整实例代码

    本文实例讲述了基于C语言实现五子棋游戏的方法,代码备有比较完整的注释,可以帮助读者更好的加以理解. 五子棋游戏代码如下: /* * 使用键盘的上下左右键移动棋盘,空格键表示下棋,ESC键退出程序 */ #include <stdio.h> #include <stdlib.h> #include <bios.h> #include <graphics.h> #include<malloc.h> /* * 对应键盘键的十六进制数字 */ #defi

  • C语言实现简单三子棋程序

    使用C语言实现简单的三子棋程序,主要是对二维数组的运用,我们需要一个头文件,两个源文件来实现. game.h //包含函数的声明,宏定义 test.c //包含主函数,函数调用 game.c //包含函数的定义 整体思路 1.要完成一个简单的三子棋程序,首先需要创建一个二维数组,并完成数组初始化. //使用宏定义定义常量,方便之后对数组的使用 #define ROW 3 //行 #define COL 3 //列 char arr[ROW][COL] = { 0 }; Arr_init(arr,

  • C语言实现五子棋小游戏

    首先我们先来看一个稍微简单些的实现方式: #include <stdio.h> #include <stdlib.h> #define N 15 int chessboard[N + 1][N + 1] = { 0 }; int whoseTurn = 0; void initGame(void); void printChessboard(void); void playChess(void); int judge(int, int); int main(void) { init

  • C语言实现三子棋游戏

    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<time.h> void chess_board(char arr[3][3]) //打印棋盘 { int i = 0; int j = 0; for (i = 0; i < 3; i++) { printf( " %c | %c | %c \n", arr [i][0], a

  • C语言实现五子棋游戏

    本文实例为大家分享了C语言实现五子棋的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <bios.h> #include <ctype.h> #include <conio.h> #include <dos.h> #define CROSSRU 0xbf /*右上角点*/ #define CROSSLU 0xda /*左上角点*/ #define CROSSLD 0xc0 /*左下角点*/ #defin

  • C语言实现三子棋小游戏

    在这里我们要写出一个三子棋的小游戏,能够实现所需要的三字连珠的功能,并且可以使得游戏让玩家进行选择是否继续的功能. 代码: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> #define ROW 3 #define COL 3 void init_board(char arr[ROW][COL]) { int i=0; int j=0; for

  • C语言实现骑士飞行棋小游戏

    本文实例为大家分享了C语言实现骑士飞行棋的具体代码,供大家参考,具体内容如下 需求分析 游戏规则和传统的飞行棋一样,支持两人对战 采用100格小型游戏棋盘 游戏规则:对战双方轮流掷骰子控制自己的骑兵前进或后退,在游戏棋盘上设置有关卡 普通 地雷 暂停 时空隧道 幸运轮盘(提供两种运气:交换位置和轰炸) 棋盘上的关卡只在骑兵第一次移动遇到时有效 #include<stdio.h> #include<windows.h> //颜色 #include<string.h> #i

  • 纯C语言实现五子棋

    正在考虑增加一个MFC界面.不是人机对战的. 五子棋.c //date 2014年7月7日09:53:24 //willows //五子棋 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <assert.h> //棋盘初始化函数 //Chessboard棋盘数组,ln=棋盘大小,成功返回Chessboard,不成功NULL void init_Chessboa

  • C语言实现三子棋

    本文实例为大家分享了C语言实现三子棋的具体代码,供大家参考,具体内容如下 题目:C语言实现三子棋 问题分析:首先用到数组,存储信息.棋盘的信息和棋子的信息 打印棋盘 读取棋子的位置 判断是否连子 打印棋盘 然后重复 代码如下: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //数组沙盘 char Global_Gobang[10][10]; int Global_line, Global_p

  • C语言实现骑士飞行棋

    本文实例为大家分享了C语言实现骑士飞行棋的具体代码,供大家参考,具体内容如下 /* Author Mr.Long * Date 2015年12月2日17:33:17 */ #include<iostream> #include<string> #include<windows.h> #include<stdlib.h> #include<time.h> #define random(x) (rand()%x) using namespace st

  • C# 骑士飞行棋的源码(分享)

    代码如下所示: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace 骑士飞行棋{    class Program    {        //在下面的数组存储我们游戏地图各各关卡        //数组的下标为0的元素对应地图上的第1格    下标为1的元素对应元素第2格...下标为

  • C#实现骑士飞行棋

    前言 飞行棋小游戏是学习C#以来,接触的第一个游戏项目,根据小杨老师的思路引导,自己的代码也实现了功能,经过思路的梳理,试着不借助代码自己去实现功能,感触就是不管想的多明白,实践起来完全不一样,所以,还得多多实践,培养严谨的逻辑思维.下面看看我梳理的思路~ 游戏中界面 飞行棋流程思路 掷骰子流程 游戏运行流程 掷骰子代码 public static void RowShaiZi(int xy) { Random r = new Random();//随机数 int num = r.Next(1,

  • C#飞行棋小程序设计代码

    飞行棋游戏大家应该都玩过吧,如何使用C#语言进行编写,本文实例就为大家分享了飞行棋C#实现代码,供大家参考,具体内容如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Pachee { class Program { #region 静态字段 // 关卡数量 public static int

  • C#绘制飞行棋地图小程序

    1. 初始化地图,在绘制时可先将地图进行初始化,用数组来存储关卡的位置,然后利用循环给地图中 关卡所在处赋予代表关卡的值. 关键代码如下 /// <summary> /// 初始化游戏地图 /// </summary> static void InitialMap() { for (int i=0;i<Map.Length;i++) { Map[i] =0; } //用于存储关卡位置 int[] luckyTurn = { 6, 23, 40, 55, 69, 83,98 }

  • C#飞行棋小程序设计分析

    C#小程序飞行棋,程序效果图 1.设计分析 这个程序界面大致分为四部分: ① 最上面游戏名字界面 ②信息提示区 ③游戏界面区 ④游戏操作提示区 2.分区设计实现 一.游戏界面显示区,由于只需要显示出图形即可,因此直接用Console.Writeline()输出即可. 二.信息提示区,此处用于显示 游戏对战双方的姓名等信息,在游戏开始时需要由用户录入对战双方的姓名信息,因此可用Console.Readline()来读取 用户键入的值,<注:需要检查验证对战双方的姓名不可相同!> 三.游戏界面区,

  • C#实现飞行棋小游戏

    本文实例为大家分享了C#实现飞行棋小游戏的具体代码,供大家参考,具体内容如下 逻辑图 以下是掷色子的一个代码,比较有代表性,里面的逻辑和内容都已注释,可通过注释了解这一方法的运作模式. public static void RowTouZi(int playerPos) //掷色子 { //产生随机数,掷色子的随机数 Random r = new Random(); int num = r.Next(1, 7); //定义一个字符串变量 string msg = ""; //提示用户信

  • C#控制台实现飞行棋游戏

    本文实例为大家分享了C#实现飞行棋游戏的具体代码,供大家参考,具体内容如下 游戏截图: 管理类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class ProgramManage { //随机数 public static Random rd = new Ran

  • C#实现飞行棋项目

    本文实例为大家分享了C#实现飞行棋项目的具体代码,供大家参考,具体内容如下 1.制作游戏头部:游戏头部介绍 2.绘制地图 使用一维数组装整个地图的路线 如果这个位置是0,绘制普通格子□ 如果这个位置是1,绘制幸运轮盘◎ 如果这个位置是2,绘制地雷★ 如果这个位置是3,绘制暂停▲ 如果这个位置是4,绘制时空隧道卍 规划幸运轮盘位置 int[] luckyturn = { 6, 23, 40, 55, 69, 83 }; 规划地雷的位置 int[] landMine = { 5,13,17,33,3

随机推荐