java骑士飞行棋 小游戏
用Java实现一个简单的打飞机游戏

用Java实现一个简单的打飞机游戏打飞机游戏是一类经典的游戏,具有简单、刺激和容易上手的特点。
在本文中,我们将使用Java编程语言来实现一个简单的打飞机游戏。
要实现这个游戏,我们可以分为三个主要的步骤:游戏初始化、游戏逻辑和游戏界面。
第一步是游戏初始化。
我们需要设置游戏窗口的大小和标题,以及创建游戏界面所需的元素,如玩家飞机、敌机和子弹。
我们可以使用Java提供的图形库,如AWT或JavaFX来创建游戏窗口和界面元素。
第二步是游戏逻辑。
我们需要定义游戏的规则和行为。
首先,我们需要让玩家飞机可以根据用户的输入(如键盘按键)进行移动。
然后,我们需要创建敌机,并使其在游戏界面上自动移动。
接下来,我们需要创建子弹,并使其可以击中敌机。
当玩家的飞机与敌机相撞或者子弹击中敌机时,游戏将结束。
最后一步是游戏界面。
我们需要定义游戏界面的显示方式。
可以在游戏界面上显示玩家的飞机和敌机,并实时更新它们的位置。
还可以显示分数和游戏状态,以提供更好的游戏体验。
下面是一个简单的示例代码,演示了如何使用Java实现一个简单的打飞机游戏:```javaimport javax.swing.*;import java.awt.*;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;public class SimplePlaneGame extends JFrame implements KeyListener {private final int WINDOW_WIDTH = 800;private final int WINDOW_HEIGHT = 600;private int playerX = 400;private int playerY = 500;private boolean gameRunning = true;public SimplePlaneGame() {setTitle("Simple Plane Game");setSize(WINDOW_WIDTH, WINDOW_HEIGHT);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setResizable(false);setLocationRelativeTo(null);setLayout(null);setVisible(true);addKeyListener(this);}public void paint(Graphics g) {super.paint(g);g.setColor(Color.BLUE);g.fillRect(playerX, playerY, 50, 50);}public void keyPressed(KeyEvent e) {if (e.getKeyCode() == KeyEvent.VK_LEFT) {playerX -= 5;repaint();} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) { playerX += 5;repaint();}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}public static void main(String[] args) {SimplePlaneGame game = new SimplePlaneGame();while (game.gameRunning) {try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}}}}```在这个示例中,我们使用了一个继承自JFrame的类来创建游戏窗口。
飞行棋游戏(控制台)

飞⾏棋游戏(控制台)using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _04Test{class Program{//我们⽤静态字段来模拟全局变量static int[] Maps = new int[100];//声明⼀个静态数组⽤来存储玩家A跟玩家B的坐标static int[] PlayerPos = new int[2];//存储两个玩家的姓名static string[] PlayerNames = new string[2];//两个玩家的标记static bool[] Flags = new bool[2];//Flags[0]默认是false Flags[1]默认也是falsestatic void Main(string[] args){GameShow();#region 输⼊玩家姓名Console.WriteLine("请输⼊玩家A的姓名");PlayerNames[0] = Console.ReadLine();while (PlayerNames[0] == ""){Console.WriteLine("玩家A的姓名不能为空,请重新输⼊");PlayerNames[0] = Console.ReadLine();}Console.WriteLine("请输⼊玩家B的姓名");PlayerNames[1] = Console.ReadLine();while (PlayerNames[1]==""||PlayerNames[1]==PlayerNames[0]){if (PlayerNames[1] == ""){Console.WriteLine("玩家B的姓名不能为空,请重新输⼊");PlayerNames[1] = Console.ReadLine();}else{Console.WriteLine("玩家B的姓名不能玩家A的形同,请重新输⼊");PlayerNames[1] = Console.ReadLine();}}#endregion//玩家姓名输⼊OK之后我们⾸先应该清屏Console.Clear();//清屏GameShow();Console.WriteLine("{0}的⼠兵⽤A表⽰",PlayerNames[0]);Console.WriteLine("{0}的⼠兵⽤B表⽰",PlayerNames[1]);//在画地图之前⾸先应该初始化地图InitailMap();DrawMap();//当玩家A跟玩家B没有⼀个⼈在终点的时候两个玩家不停的去玩游戏while (PlayerPos[0] < 99 && PlayerPos[1] < 99){if (Flags[0] == false){PlayGame(0);//Flags[0]=true;}else{Flags[0] = false;}if (PlayerPos[0] >= 99){Console.WriteLine("玩家{0}⽆耻的赢了玩家{1}",PlayerNames[0],PlayerNames[1]);break;}if (Flags[1] == false){PlayGame(1);}else{Flags[1] = false;}if (PlayerPos[1] >= 99){Console.WriteLine("玩家{0}⽆耻的赢了玩家{1}",PlayerNames[1],PlayerNames[0]);break;}}//whileWin();Console.ReadKey();}/// <summary>/// 胜利/// </summary>public static void Win(){Console.ForegroundColor = ConsoleColor.Red;Console.WriteLine(" ◆ ");Console.WriteLine(" ■◆■■");Console.WriteLine(" ■■■■■■◆■■■■");Console.WriteLine(" ■■■■◆■■■■");Console.WriteLine(" ■■■■■■■■■■■■■■■■■■"); Console.WriteLine(" ■■■■■■●■●■■■");Console.WriteLine(" ■■■●■●■■■");Console.WriteLine(" ■■■■■■■■●■●■■■"); Console.WriteLine(" ■■■■■●■■■■■");Console.WriteLine(" ■■■■■■■■");Console.WriteLine(" ■■■■■■ ");Console.WriteLine(" ■■■■●■ ");Console.WriteLine(" ■■■■■■■■■■●●");Console.ResetColor();}/// <summary>/// 画游戏头/// </summary>public static void GameShow(){Console.ForegroundColor = ConsoleColor.Yellow;Console.WriteLine("**************************");Console.ForegroundColor = ConsoleColor.Red;Console.WriteLine("**************************");Console.ForegroundColor = ConsoleColor.Green;Console.WriteLine("**************************");Console.ForegroundColor = ConsoleColor.Blue;Console.WriteLine("***基础班飞⾏棋***");Console.ForegroundColor = ConsoleColor.Cyan;Console.WriteLine("**************************");Console.ForegroundColor = ConsoleColor.Green;Console.WriteLine("**************************");}/// <summary>/// 初始化地图/// </summary>public static void InitailMap(){int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘◎for (int i = 0; i < luckyturn.Length; i++){//int index = luckyturn[i];Maps[luckyturn[i]] = 1;}int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷☆for (int i = 0; i < landMine.Length; i++){Maps[landMine[i]] = 2;}int[] pause = { 9, 27, 60, 93,2,3,4,7,8 };//暂停▲for (int i = 0; i < pause.Length; i++){Maps[pause[i]] = 3;}int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道卐for (int i = 0; i < timeTunnel.Length; i++){Maps[timeTunnel[i]] = 4;}}public static void DrawMap(){Console.WriteLine("图例:幸运轮盘:◎地雷:☆暂停:▲时空隧道:卐");#region 第⼀横⾏for (int i = 0; i < 30; i++){Console.Write(DrawStringMap(i));}//for#endregion//画完第⼀横⾏后应该换⾏Console.WriteLine();#region 第⼀竖⾏for (int i = 30; i < 35; i++){for (int j = 0; j <= 28; j++){Console.Write(" ");}Console.Write(DrawStringMap(i));Console.WriteLine();}#endregion#region 第⼆横⾏for (int i = 64; i >= 35; i--){Console.Write(DrawStringMap(i));}#endregion//画完第⼆横⾏应该换⾏Console.WriteLine();#region 第⼆竖⾏for (int i = 65; i <= 69; i++){Console.WriteLine(DrawStringMap(i));}#endregion#region 第三横⾏for (int i = 70; i <= 99; i++){Console.Write(DrawStringMap(i));}#endregion//画完最后⼀⾏应该换⾏Console.WriteLine();}//DrawMap⽅法的结尾/// <summary>/// 从画地图的⽅法中抽象出来的⼀个⽅法/// </summary>/// <param name="i"></param>/// <returns></returns>public static string DrawStringMap(int i){string str = "";#region 画图//如果玩家A跟玩家B的坐标相同,并且都在这个地图上,画⼀个尖括号 if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i){str = "<>";}else if (PlayerPos[0] == i){//shift+空格str = "A";}else if (PlayerPos[1] == i){str = "B";}else{switch (Maps[i]){case 0:Console.ForegroundColor = ConsoleColor.Yellow;str = "□";break;case 1:Console.ForegroundColor = ConsoleColor.Green;str = "◎";break;case 2:Console.ForegroundColor = ConsoleColor.Red;str = "☆";break;case 3:Console.ForegroundColor = ConsoleColor.Blue;str = "▲";break;case 4:Console.ForegroundColor = ConsoleColor.DarkCyan;str = "卐";break;}//switch}//elsereturn str;#endregion}/// <summary>/// 玩游戏/// </summary>public static void PlayGame(int playerNumber){Random r = new Random();int rNumber = r.Next(1, 7);Console.WriteLine("{0}按任意键开始掷骰⼦", PlayerNames[playerNumber]);Console.ReadKey(true);Console.WriteLine("{0}掷出了{1}", PlayerNames[playerNumber],rNumber);PlayerPos[playerNumber] += rNumber;ChangePos();Console.ReadKey(true);Console.WriteLine("{0}按任意键开始⾏动", PlayerNames[playerNumber]);Console.ReadKey(true);Console.WriteLine("{0}⾏动完了", PlayerNames[playerNumber]);Console.ReadKey(true);//玩家A有可能踩到了玩家B ⽅块幸运轮盘地雷暂停时空隧道if (PlayerPos[playerNumber] == PlayerPos[1 - playerNumber]){Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber], PlayerNames[1 - playerNumber]);PlayerPos[1 - playerNumber] -= 6;ChangePos();Console.ReadKey(true);}else//踩到了关卡{//玩家的坐标switch (Maps[PlayerPos[playerNumber]])// 0 1 2 3 4{case 0: Console.WriteLine("玩家{0}踩到了⽅块,安全。
用Java制作一个简单的飞行射击游戏

用Java制作一个简单的飞行射击游戏Java是一种广泛应用于软件开发的编程语言,具有跨平台、面向对象等特点。
在本文中,我们将使用Java编写一个简单的飞行射击游戏,为读者展示如何利用Java语言开发娱乐应用。
1. 游戏介绍该游戏是一款基于图形界面的飞行射击游戏,玩家需要控制飞机消灭敌机,并尽量避免敌机的攻击。
游戏具有计分系统和游戏难度递增的功能,带给玩家不同的挑战。
2. 游戏界面设计游戏界面分为游戏画面区和得分区两部分。
游戏画面区显示玩家控制的飞机和敌机,以及飞机发射的子弹;得分区显示当前玩家的得分。
3. 游戏实现步骤(1)创建飞机和敌机的类,并为它们设置属性和行为。
飞机类包括坐标、速度等属性,以及向上移动和发射子弹的方法;敌机类包括坐标、速度等属性,以及向下移动和消失的方法。
(2)创建子弹类,并为其设置属性和行为。
子弹类包括坐标、速度等属性,以及向上移动和击中敌机的方法。
(3)在游戏画面区创建飞机、敌机、子弹,并设置相应的键盘监听事件,实现玩家对飞机的控制。
(4)设置游戏逻辑,包括检测子弹是否击中敌机、敌机是否撞击到飞机、得分的计算等。
(5)添加游戏界面,包括游戏画面区和得分区的显示,以及游戏结束时的提示消息。
4. 游戏的实现代码(部分代码展示)以下是游戏中的一些关键代码片段,供读者参考:```java// 飞机类class Plane {int x, y; // 飞机的坐标int speed; // 飞机的速度public void moveUp() {// 向上移动的逻辑}public void shoot() {// 发射子弹的逻辑}}// 敌机类class Enemy {int x, y; // 敌机的坐标int speed; // 敌机的速度public void moveDown() {// 向下移动的逻辑}public void disappear() {// 敌机消失的逻辑}}// 子弹类class Bullet {int x, y; // 子弹的坐标int speed; // 子弹的速度public void moveUp() {// 向上移动的逻辑}public boolean hitEnemy(Enemy enemy) {// 判断子弹是否击中敌机的逻辑}}// 游戏画面区的显示与键盘监听class GameScreen {public void drawPlane(Plane plane) {// 绘制飞机在游戏画面区的逻辑}public void drawEnemy(Enemy enemy) { // 绘制敌机在游戏画面区的逻辑}public void drawBullet(Bullet bullet) { // 绘制子弹在游戏画面区的逻辑}public void onKeyPress(int keyCode) { // 监听键盘按下事件的逻辑}}// 游戏逻辑class GameLogic {public void checkCollision(Plane plane, Enemy enemy) { // 检测飞机与敌机是否发生碰撞的逻辑}public void checkHit(Bullet bullet, Enemy enemy) {// 检测子弹是否击中敌机的逻辑}public int calculateScore(int hitCount) {// 根据击中敌机的数量计算得分的逻辑}}// 游戏界面class GameUI {public void showGameScreen(GameScreen screen) {// 显示游戏画面区的逻辑}public void showScore(int score) {// 显示得分区的逻辑}public void showGameOver() {// 显示游戏结束的提示消息}}// 游戏入口public class Main {public static void main(String[] args) {// 初始化游戏相关对象Plane plane = new Plane();Enemy enemy = new Enemy();Bullet bullet = new Bullet();GameScreen screen = new GameScreen(); GameLogic logic = new GameLogic();GameUI ui = new GameUI();// 游戏主循环while (true) {screen.drawPlane(plane);screen.drawEnemy(enemy);screen.drawBullet(bullet);logic.checkCollision(plane, enemy);if (bullet.hitEnemy(enemy)) {int hitCount = 1; // 记录击中敌机的数量int score = logic.calculateScore(hitCount);ui.showScore(score);}ui.showGameScreen(screen);// 处理键盘事件int keyCode = 0; // 假设读取到的键盘事件码 screen.onKeyPress(keyCode);// 游戏结束的判断逻辑boolean isGameOver = false; // 假设游戏未结束 if (isGameOver) {ui.showGameOver();break;}}}}```通过以上代码片段的展示,读者可以初步了解如何用Java开发一个简单的飞行射击游戏。
飞行棋在Qt开发环境下使用C开发的飞行棋小游戏

飞行棋在Qt开发环境下使用C开发的飞行棋小游戏飞行棋是一种经典的棋类游戏,深受广大玩家的喜爱。
在本文中,我将介绍如何在Qt开发环境下使用C语言来开发一个飞行棋小游戏,带您一起体验飞行棋的乐趣。
【引言】飞行棋,又称为飞机棋或飞行机棋,是一种纸牌棋类游戏,起源于中国。
其规则简单易懂,玩家通过掷骰子决定移动步数,目标是先将所有棋子移动到终点。
在这个项目中,我们将使用Qt开发环境和C语言来实现飞行棋小游戏的设计和开发。
【设计思路】首先,我们需要创建一个界面,以显示游戏的棋盘和相关信息。
通过Qt的图形界面库,我们可以轻松绘制出飞行棋棋盘,并添加各种元素,如起点、终点、道具等。
另外,我们还需要设计游戏的规则和逻辑,包括掷骰子、棋子移动、道具效果等等。
【开发步骤】1. 创建Qt项目:在Qt开发环境中,创建一个新的项目,选择C语言作为开发语言。
2. 绘制棋盘:使用Qt的绘图功能,绘制飞行棋的棋盘。
可以使用矩形、线段等基本图形来实现棋盘的绘制,注意按照飞行棋的规则设计合适的格子大小和颜色。
3. 添加起点和终点:在棋盘上添加起点和终点的标识,可以使用图片或者绘制特殊形状的方法来实现。
4. 设计玩家棋子:为每个玩家创建一个棋子对象,并在棋盘上显示。
可以使用不同的颜色或形状来区分不同的玩家。
5. 实现掷骰子功能:为玩家实现掷骰子的功能,通过随机数生成一个1到6之间的数字,表示骰子的点数。
6. 棋子移动:根据骰子的点数,计算棋子应该移动的步数,并更新棋子在棋盘上的位置。
可以使用数组来表示棋盘上每个格子的状态,通过修改数组元素的值来实现棋子的移动。
7. 设计道具功能:在游戏中,可以设计一些特殊的道具,如炸弹、飞行器等,玩家可以使用这些道具来干扰对手或提升自己的优势。
8. 判断胜负条件:在每次棋子移动后,需要判断玩家是否达到了终点,如果是,则该玩家获得胜利。
可以通过比较玩家当前位置和终点位置来进行判断。
9. 完善游戏界面:添加一些辅助信息,如显示当前玩家、倒计时等。
飞行棋的设计与实现

飞行棋的设计与实现谢云燕【期刊名称】《计算机光盘软件与应用》【年(卷),期】2012(000)003【摘要】飞行棋是典型的战旗类游戏(SLG),其开发主要包括游戏界面的设计、游戏规则的设计;经过分析,笔者使用SUN公司的JAVA语言,利用JAVA语言提供的各种面向对象的开发工具,在短时间内建立游戏原型,然后,对初始原型进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
%The flight chess is a battle flag games (SLG),includes the development of the game interface design,the design of the rules of the game;After analysis,the author uses SUN JAVA language provided by the JAVA language object-oriented development tools,in a short time to establish a prototype of the game,then demand iteration of the initial prototype,constantly revised and improved,until the formation of a viable system of customer satisfaction.【总页数】2页(P198-199)【作者】谢云燕【作者单位】哈尔滨师范大学计算机科学与信息工程学院,哈尔滨150025【正文语种】中文【中图分类】TP311.52【相关文献】1.基于Java的飞行棋的设计与实现 [J], 郑艳;2.独家飞行棋 [J], 强恒荣3.恐龙飞行棋和"石头剪刀布" [J], 陈迎4.恐龙飞行棋和“石头剪刀布” [J], 陈迎5."化学飞行棋"游戏在高中化学教学中的应用 [J], 韩姿;刘翠;张丽姣;金丽雯因版权原因,仅展示原文概要,查看原文内容请购买。
骑士飞行棋(C#版)

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 骑士飞行棋{class Program{static int[] Map = new int[100];static int[] playerPos = {0,0};static void Main(string[] args){Random r = new Random();int num = 0;string msg = "";//存储用户关卡提示语bool[] isStop = {false,false};int[] luckyTurn = { 6, 23, 40, 55, 69, 83 };int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };int[] pause = { 9, 27, 60, 93 };int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };ShowUI();string[] names = new string[2];Console.WriteLine("请输入玩家A的姓名!");names[0] = Console.ReadLine();while (names[0] == ""){Console.WriteLine("玩家A姓名不能为空!");names[0] = Console.ReadLine();}Console.WriteLine("请输入玩家B的姓名!");names[1] = Console.ReadLine();while (names[1] == "" || names[1] == names[0]){if (names[1] == ""){Console.WriteLine("玩家B姓名不能为空!");}else if (names[1] == names[0]){Console.WriteLine("玩家B姓名已存在!");}names[1] = Console.ReadLine();}Console.Clear();ShowUI();Console.WriteLine("对战开始......");Console.WriteLine("{0}用♂来表示", names[0]);Console.WriteLine("{0}用♀来表示", names[1]);Console.WriteLine("如位置相同,AB用<>来表示");InitialMap();//初始化地图DrawMap();//绘制地图Console.WriteLine("开始游戏......");//玩家A,B轮流掷筛子while (playerPos[0] < 99 && playerPos[1] < 99){if (isStop[0] == false){#region A先掷骰子//玩家A掷筛子Console.ForegroundColor = ConsoleColor.Blue;//设置A的姓名颜色为蓝色Console.WriteLine();Console.WriteLine("玩家{0}按任意键开始掷骰子",names[0]);Console.ReadKey(true);num = r.Next(1, 7);Console.WriteLine("玩家{0}点数大小为:{1}", names[0], num);Console.ResetColor();//颜色恢复为默认值Console.WriteLine("按任意键开始行动......");Console.ReadKey(true);playerPos[0] = playerPos[0] + num;CheckPos();if (playerPos[0] == playerPos[1])//玩家A碰到玩家B,B退回原点{playerPos[1] = 0;msg = string.Format("{0}踩到了{1},{1}退回原点", names[0], names[1], names[1]);}else//没有碰到时,判断是否有关卡{switch (Map[playerPos[0]]){case 0:msg = "";break;case 1://幸运轮盘Console.Clear();DrawMap();Console.ForegroundColor = ConsoleColor.DarkYellow;Console.WriteLine("{0}走到了幸运轮盘,请选择运气类型",names[0]);Console.WriteLine("1----交换位置2----轰炸{0}",names[1]);int input = ReadInt(1, 2);//存储用户运气选择,方法调用不能放到开始!!!if (input == 1)//与对手交换位置{int temp = playerPos[0];playerPos[0] = playerPos[1];playerPos[1] = temp;msg = string.Format("{0}选择了与{1}交换位置",names[0],names[1]);}else//轰炸对方{playerPos[1] = playerPos[1] - 6;CheckPos();msg = string.Format("{0}轰炸了{1},{1}退6格", names[0], names[1]);}break;case 2://踩到地雷playerPos[0] = playerPos[0] - 6;CheckPos();msg = string.Format("{0}踩到了地雷,退6格", names[0]);break;case 3://暂停isStop[0] = true;msg = string.Format("{0}本回合暂停!",names[0]);break;case 4://时空隧道playerPos[0] = playerPos[0] + 10;msg = string.Format("天啊!!!{0}进入了时空隧道,进10格", names[0]);break;}}Console.Clear();DrawMap();if (msg != ""){Console.WriteLine(msg);}Console.ForegroundColor = ConsoleColor.Blue;Console.WriteLine("玩家{0}掷筛子掷出了{1}", names[0], num);Console.ResetColor();Console.WriteLine("**************玩家{0}和{1}玩家的位置如下**************", names[0], names[1]);Console.ForegroundColor = ConsoleColor.Blue;Console.WriteLine("{0}的位置为:{1}", names[0], playerPos[0] + 1);Console.ResetColor();Console.ForegroundColor = ConsoleColor.Yellow;Console.WriteLine("{0}的位置为:{1}", names[1], playerPos[1] + 1);Console.ResetColor();Console.ReadKey();#endregion}else{isStop[0] = false;}if (playerPos[0] >= 99){break;}if (isStop[1] == false){#region 玩家B掷骰子Console.ForegroundColor = ConsoleColor.Yellow;Console.WriteLine();Console.WriteLine("玩家{0}按任意键开始掷骰子",names[1]);//Console.WriteLine("玩家{0}按任意键开始掷骰子", names[0]);Console.ReadKey(true);num = r.Next(1, 7);Console.WriteLine("玩家{0}点数大小为:{1}", names[1], num);Console.ResetColor();Console.WriteLine("按任意键开始行动......");Console.ReadKey(true);playerPos[1] = playerPos[1] + num;CheckPos();if (playerPos[0] == playerPos[1])//玩家B碰到玩家A,A退回原点{playerPos[0] = 0;msg = string.Format("{0}踩到了{1},{1}退回原点", names[1], names[0]);}else//没有碰到时,判断是否有关卡{switch (Map[playerPos[1]]){case 0:msg = "";break;case 1://幸运轮盘Console.Clear();DrawMap();Console.ForegroundColor = ConsoleColor.DarkYellow;Console.WriteLine("{0}走到了幸运轮盘,请选择运气类型",names[1]);Console.WriteLine("1----交换位置2----轰炸{0}",names[0]);int input = ReadInt(1, 2);//存储用户运气选择,方法调用不能放到开始!!!if (input == 1)//与对手交换位置{int temp = playerPos[1];playerPos[1] = playerPos[0];playerPos[0] = temp;msg = string.Format("{0}选择了与{1}交换位置",names[1],names[0]);}else//轰炸对方{playerPos[0] = playerPos[0] - 6;CheckPos();msg = string.Format("{0}轰炸了{1},{1}退6格", names[1], names[0]);}break;case 2://踩到地雷playerPos[1] = playerPos[1] - 6;CheckPos();msg = string.Format("{0}踩到了地雷,退6格", names[1]);break;case 3://暂停isStop[1] = true;msg = string.Format("{0}本回合暂停!",names[1]);break;case 4://时空隧道playerPos[1] = playerPos[1] + 10;msg = string.Format("天哪!!!{0}进入了时空隧道,进10格", names[0]);break;}}Console.Clear();DrawMap();if (msg != ""){Console.WriteLine(msg);}Console.ForegroundColor = ConsoleColor.Yellow;Console.WriteLine("玩家{0}掷筛子掷出了{1}", names[1], num);Console.ResetColor();Console.WriteLine("**************玩家{0}和{1}玩家的位置如下**************", names[0], names[1]);Console.ForegroundColor = ConsoleColor.Blue;Console.WriteLine("{0}的位置为:{1}", names[0], playerPos[0] + 1);Console.ResetColor();Console.ForegroundColor = ConsoleColor.Yellow;Console.WriteLine("{0}的位置为:{1}", names[1], playerPos[1] + 1);Console.ResetColor();Console.ReadKey();#endregion}else{isStop[1] = false;}}Console.Clear();ShowUI();Console.ForegroundColor = ConsoleColor.DarkMagenta;if (playerPos[0] >= 99){Console.WriteLine("恭喜{0}狗获得了胜利!!!!", names[0]);}else{Console.WriteLine("恭喜{0}狗获得了胜利!!!!", names[1]);}Console.ReadKey();}/// <summary>/// 坐标越界判断(当坐标位置发生移动时)/// </summary>static void CheckPos(){for (int i = 0; i < 2; i++){if (playerPos[i] > 99){playerPos[i] = 99;}if (playerPos[i] < 0){playerPos[i] = 0;}}}/// <summary>/// 用于绘制飞行棋的界面/// </summary>static void ShowUI(){Console.WriteLine("***************************************");Console.WriteLine("* *");Console.WriteLine("* 骑士飞行棋*");Console.WriteLine("* *");Console.WriteLine("***************************************");}/// <summary>/// 对地图进行初始化/// </summary>static void InitialMap(){int[] luckyTurn = { 6, 23, 40, 55, 69, 83 };int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };int[] pause = { 9, 27, 60, 93 };int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };for (int i = 0; i < luckyTurn.Length; i++){int pos = luckyTurn[i];Map[pos] = 1;}for (int i = 0; i < landMine.Length; i++){Map[landMine[i]] = 2;}for (int i = 0; i < pause.Length; i++){Map[pause[i]] = 3;}for (int i = 0; i < timeTunnel.Length; i++){Map[timeTunnel[i]] = 4;}}/// <summary>/// 获得pos坐标绘制的图案/// </summary>/// <param name="pos">要绘制的坐标</param>/// <returns></returns>static string GetMapString(int pos){string result = "";if (playerPos[0] == pos && playerPos[1] == pos){Console.ForegroundColor = ConsoleColor.Yellow;result = "<>";}else if (playerPos[0] == pos){Console.ForegroundColor = ConsoleColor.Blue;result = "♂";}else if (playerPos[1] == pos){Console.ForegroundColor = ConsoleColor.Yellow;result = "♀";}else{switch (Map[pos]){case 0:Console.ForegroundColor = ConsoleColor.White;result = "□";break;case 1:Console.ForegroundColor = ConsoleColor.DarkYellow;result = "◎";break;case 2:Console.ForegroundColor = ConsoleColor.DarkRed;result = "●";break;case 3:Console.ForegroundColor = ConsoleColor.Gray;result = "▲";break;case 4:Console.ForegroundColor = ConsoleColor.Cyan;result = "Θ";break;}}return result;}static void DrawMap(){Console.WriteLine("图例:幸运轮盘◎地雷:●暂停:▲时空门:Θ");for (int i = 0; i < 30; i++)//绘制第一行{Console.Write(GetMapString(i));}Console.WriteLine();for (int i = 30; i < 35; i++)//绘制第一列{//绘制双空格for (int j = 0; j < 29; j++){Console.Write(" ");}Console.WriteLine(GetMapString(i));}for (int i = 64; i >34; i--){//for (int j = 0; j < 5; j++)//{// Console.WriteLine();//}Console.Write(GetMapString(i));}Console.WriteLine();for (int i = 65; i <=69; i++){Console.WriteLine(GetMapString(i));}for (int i = 70; i <=99; i++){Console.Write(GetMapString(i));}Console.WriteLine();Console.WriteLine();Console.ResetColor();}static int ReadInt(){int i = ReadInt(int.MaxValue, int.MinValue);return i;}static int ReadInt(int min,int max){while (true){try{int number = Convert.ToInt32(Console.ReadLine());if (number < min || number > max){Console.WriteLine("只能输入1--2,请重新输入!");continue;}return number;}catch{Console.WriteLine("只能输入数字,请重新输入!");}}}}}。
一个简单又有趣的JAVA小游戏代码

一个简单又有趣的JAVA小游戏代码猜数字import java.util.*;import java.io.*;public class CaiShu{public static void main(String[] args) throws IOException{Random a=new Random();int num=a.nextInt(100);System.out.println("请输入一个100以内的整数:");for (int i=0;i<=9;i++){BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); String str=bf.readLine();int shu=Integer.parseInt(str);if (shu>num)System.out.println("输入的数大了,输小点的!");else if (shu<num)System.out.println("输入的数小了,输大点的!");else {System.out.println("恭喜你,猜对了!");if (i<=2)System.out.println("你真是个天才!");else if (i<=6)System.out.println("还将就,你过关了!"); else if (i<=8)System.out.println("但是你还……真笨!"); elseSystem.out.println("你和猪没有两样了!"); break;}import java.util.Scanner;import java.util.Random;public class Fangfa{static int sum,sum1=0;public static void main(String [] args){int a=1,b=1,c=1;int k=0,m=1;int money =5000;int zhu =0;boolean flag = true;Random rand = new Random();Scanner input = new Scanner(System.in);while(m==1){while(flag){System.out.println("掷色子开始!");System.out.println("请下注注:下注金额只能是50的倍数且不能超过1000"); zhu=input.nextInt();if(zhu%50==0&&zhu<=1000&&zhu<=money){System.out.println("下注成功");System.out.println("买大请输入数字1,买小输入数字2");k=input.nextInt();a= rand.nextInt(6)+1;b= rand.nextInt(6)+1;c= rand.nextInt(6)+1;sum=a+b+c;if(k==1){if(sum>9){money+=zhu;System.out.println("恭喜您猜对了,骰子点数为"+sum+"结果是大"+"余额为"+money); }else{money-=zhu;System.out.println("很遗憾,骰子点数为"+sum+"结果是小"+"余额为"+money);}}if(k==2){if(sum<=9){money+=zhu;System.out.println("恭喜您猜对了,骰子点数为"+sum+"结果是小"+"余额为"+money); }else{money-=zhu;System.out.println("很遗憾,骰子点数为"+sum+"结果是大"+"余额为"+money);}}flag= false;System.out.println("继续请按1,退出请按任意键");m=input.nextInt();if(m==1){flag=true;System.out.println("您选择的是继续");}else{flag=false;System.out.println("欢迎您下次再来玩");}}else{System.out.println("下注失败"+"余额为"+money); }}}}。
骑士走棋盘 java,c实现

騎士旅遊(Knight tour)在十八世紀初倍受數學家與拼圖迷的注意,它什麼時候被提出已不可考,騎士的走法為西洋棋的走法,騎士可以由任一個位置出發,它要如何走完[所有的位置?
騎士的走法,基本上可以使用遞迴來解決,但是純綷的遞迴在維度大時相當沒有效率,一個聰明的解法由J.C. Warnsdorff在1823年提出,簡單的說,先將最難的位置走完,接下來的路就寬廣了,騎士所要走的下一步,「為下一步再選擇時,所能走的步數最少的一步。
」,使用這個方法,在不使用遞迴的情況下,可以有較高的機率找出走法(找不到走法的機會也是有的)。
C
Java。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
突然想起自己刚学java时,老师让写一个java骑士飞行棋,那时候还不知道写,到处问人,勉强写好了,结果全是放在主函数里,今天闲来没事,花了一会,再次写了个骑士飞行棋小游戏,希望对初学者有帮助吧。 代码中,可能用到了初学者还没接触到的东西,不过都不难,注释都有写明,花点时间就能明白的。 一共三个类。 分别: Game.java Map.java Player.java
package chou.game.flying; import java.util.Random; import java.util.Scanner;
public class Game { private Scanner sc = new Scanner(System.in); private static Map map = new Map(); /** * 静态块,初始化地图 * 加载时就会被执行的内容 * 不理解的,可以在static{}块里打印一句话,看看控制台反映 */ static { map.initMap(); }
/** * 游戏开始 */ public void GameStart() { //游戏开始界面 welcome();
//选择角色,生成对象数组 Player [] players = getPlayer(); //游戏开始循环,直到有玩家胜出,结束 boolean isAnyoneWin = false; while (!isAnyoneWin) {
//遍历玩家数组,让每个玩家依次进行掷点 for (int i = 0; i < players.length; i++) {
//对玩家的状态进行判断,是否处于暂停状态 if (players[i].getStatus() == 1) {
//如果玩家处于暂停状态,恢复暂停状态并跳过此回合 players[i].setStatus(0); statusSay(players[i]); continue; }
//判断玩家,手动掷点 if (i != 0) { letPlayerRoll(players[i]); }
//进行掷点 int count = roll(); System.out.println(players[i].getName() + " 掷出了 " + count + " 点");
//记录玩家roll点前位置和roll点后位置,判断玩家位置是否到达终点 players[i].setLastPosition(players[i].getPosition()); players[i].setPosition(players[i].getPosition() + count);
//判断是否踩中对方 int secondNum = Math.abs(1 - i); if (isHit(players[i], players[secondNum])) { players[secondNum].setPosition(0); if (players[i].getLastPosition() != 0) { changMap(players[i].getLastPosition(), players[i].getLastPositionFlag()); } }
if (checkAnyoneWin(players[i].getPosition())) { isAnyoneWin = true; //打印游戏结束标语 gameOver(players[i]); continue; }else {
//判断将去位置是否有特殊效果,判断效果之后,理论上来说,应该再次进行判断是否有特殊效果 //但我们这里不设这种情出现,因为再来循环的话,代码会更复杂,不利于初学者学习 //在这里,我们只判断再进行一次roll点的判定 String mapBuff = null; mapBuff = getMapFlag(players[i].getPosition()); if (!("=".equals(mapBuff))) { players[i] = checkBuff(players[i], mapBuff); }else if ("*".equals(mapBuff)) { count = roll(); players[i].setPosition(players[i].getPosition() + count); }
//判断是否踩中对方 secondNum = Math.abs(1 - i); if (isHit(players[i], players[secondNum])) { players[secondNum].setPosition(0); if (players[i].getLastPosition() != 0) { changMap(players[i].getLastPosition(), players[i].getLastPositionFlag()); } }
//记录玩家去的位置的形状,地图复原使用 mapBuff = getMapFlag(players[i].getPosition()); players[i].setLastPositionFlag(mapBuff);
//改变地图上玩家的位置,先复原,再改变 //初始位置是为0,所以要判断 if (players[i].getLastPosition() != 0) { changMap(players[i].getLastPosition(), players[i].getLastPositionFlag()); }
//三目运算符,i == 0 是一个布尔式,? 疑问,如果是真,返回:前面的值,如果假,:后面的值 mapBuff = i == 0 ? "C" : "P"; changMap(players[i].getPosition(), mapBuff); }
map.showMap(); } }
} /** * 判断是否踩中对方 * @param first 前面玩家 * @param second 后面玩家 */ public boolean isHit(Player first,Player second) { boolean temp = false; if (first.getPosition() == second.getPosition()) { temp = true; } return temp; }
/** * 玩家掷点阻塞 * @param player 玩家信息 */ public void letPlayerRoll(Player player) { System.out.println("请玩家 " + player.getName() + " 掷点~"); sc.next(); }
/** * 检查玩家到达的地图位置是否有特殊效果 * @param player 玩家 * @param mapBuff 地图标识 * @return 执行过buff后的玩家对象 */ public Player checkBuff(Player player,String mapBuff) { if ("-".equals(mapBuff)) { System.out.println(player.getName()+ " 进入黑洞,迷失了方向,后退6步"); System.out.println(player.getName() + ":shit!"); player.setPosition(player.getPosition() - 6); }else if ("+".equals(mapBuff)) { System.out.println(player.getName() + " 进入时空隧道,前进6步"); System.out.println(player.getName() + ":luckily!"); player.setPosition(player.getPosition() + 6); }else if ("*".equals(mapBuff)) { System.out.println(player.getName() + " 进行了空间跳跃~再来一次"); System.out.println(player.getName() + ":see me fly!"); player.setStatus(0); }else if ("^".equals(mapBuff)) { System.out.println(player.getName() + " 抛锚了,暂停一次"); System.out.println(player.getName() + ":what is the fuck!"); player.setStatus(1); } return player; }
/** * 改变地图上玩家的位置 * @param position 位置 * @param flag 地图形状 */ public void changMap(int position, String flag) { if (position < 31) { map.map[0][position - 1] = flag; }else if (position > 30 && position < 36) { map.map[position - 30][29] = flag; }else if (position > 35 && position < 66) { map.map[6][position - 35] = flag; }else if (position > 65 && position < 71) { map.map[position - 59][0] = flag; }else if (position > 70 && position < 101) { map.map[12][position - 71] = flag; } }
/** * 暂停言语 * @param player 被暂停的玩家 */ public void statusSay(Player player) { System.out.println(player.getName() + " 暂停中..........."); }