文档库 最新最全的文档下载
当前位置:文档库 › java骑士飞行棋 小游戏

java骑士飞行棋 小游戏

java骑士飞行棋 小游戏
java骑士飞行棋 小游戏

突然想起自己刚学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() + " 暂停中...........");

}

/**

* 获得地图指定位置的形状

* @param position 位置

* @return

*/

public String getMapFlag(int position) {

String flag = "=";

if (position < 31) {

flag = map.map[0][position - 1];

}else if (position > 30 && position < 36) {

flag = map.map[position - 30][29];

}else if (position > 35 && position < 66) {

flag = map.map[6][65 - position];

}else if (position > 65 && position < 71) {

flag = map.map[position - 59][0];

}else if (position > 70 && position < 101) {

flag = map.map[12][position - 71];

}

return flag;

}

/**

* 胜利标语

* @param player 玩家

*/

public void gameOver(Player player) {

System.out.println("whar a palyer!!");

System.out.println(" 玩家 " + player.getName() + " 率先到达终点,获得了胜利");

}

/**

* 判断是否胜利

* @param position 位置

* @return boolean,temp

*/

public boolean checkAnyoneWin(int position) {

boolean temp = false;

temp = position >= 100 ? true : false;

return temp;

}

/**

* 掷点

* @return int,count 点数

*/

public int roll () {

int count = 0;

//产生一个6以内的随机数

Random random = new Random();

count = random.nextInt(6) + 1;

return count;

}

/**

* 选择角色

* @return Player [],players 玩家对象数组

*/

public Player [] getPlayer(){

boolean flag = true;

//创建对象数组,长度为2,用来接收玩家对象和电脑

Player [] players = new Player[2];

Player player = new Player();

player.setNum(1);

Player computer = new Player();

while (flag) {

String userChoose = sc.next();

//获取输入内容,判断是否 1,2,3,根据选择给玩家对象赋名

if (!userChoose.matches("[1-3]")) {

System.out.println("→ 选择角色失败,请重新选择");

} else {

switch (Integer.parseInt(userChoose)) {

case 1:

player.setName("YaGaMi");

break;

case 2:

player.setName("Killer");

break;

case 3:

player.setName("Chou");

break;

default:

break;

}

System.out.println("→ 你选择了 " + player.getName() + " 作为你的游戏角色");

System.out.println("→ 电脑选择了 Fujiwara no Mokou 作为游戏角色" );

computer.setName("Fujiwara no Mokou");

//数组第1位是玩家,第二位是电脑

players[1] = player;

players[0] = computer;

flag = false;

}

}

return players;

}

public void welcome() {

System.out.println("*********************************");

System.out.println("*******欢迎来到飞行棋小游戏*******");

System.out.println("*********************************");

System.out.println();

System.out.println("游戏说明:");

System.out.println("地图上随机出现 * - ^ + 四种效果");

System.out.println("分别代码:再掷1次,后退6步,暂停1次,前进6步");

System.out.println();

System.out.println("→ 请选择你的喜欢的游戏角色编号:");

System.out.println("1.YaGaMi");

System.out.println("2.Killer");

System.out.println("3.Chou");

}

public static void main(String[] args) {

new Game().GameStart();

}

}

package chou.game.flying;

public class Map {

public String [][] map = new String[13][30];

public void initMap() {

for (int i = 0; i < map.length; i++) {

for (int j = 0; j < map[i].length; j++) {

if(i == 0 || i == 6 || i == 12 || (i < 6 && j == 29) || (i > 6 && j == 0)){

map[i][j] = "=";

}else {

map[i][j] = " ";

}

}

}

map[0][6] = "+";

map[0][8] = "-";

map[0][15] = "*";

map[0][20] = "-";

map[0][29] = "^";

map[3][29] = "*";

map[6][7] = "^";

map[6][16] = "+";

map[6][20] = "-";

map[6][28] = "^";

map[10][0] = "*";

map[12][7] = "-";

map[12][8] = "^";

map[12][15] = "-";

map[12][20] = "^";

map[12][23] = "-";

map[12][28] = "-";

}

public void showMap(){

for (int i = 0; i < map.length; i++) {

for (int j = 0; j < map[i].length; j++) {

if(i == 6){

System.out.print(map[i][29-j] + " ");

}else {

System.out.print(map[i][j] + " ");

}

}

System.out.println();

}

}

public static void main(String[] args) {

}

}

package chou.game.flying;

public class Player {

private String name;

//玩家状态

private int status;

//玩家当前位置

private int position;

//玩家上把位置

private int lastPosition;

//玩家上把位置的地图形状

private String lastPositionFlag;

//玩家编号

private int num;

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

public String getName() {

return name;

}

public void setName(String name) {

https://www.wendangku.net/doc/9d18187069.html, = name;

}

public int getStatus() {

return status;

}

public void setStatus(int status) {

this.status = status;

}

public int getPosition() {

return position;

}

public void setPosition(int position) { this.position = position;

}

public int getLastPosition() {

return lastPosition;

}

public void setLastPosition(int lastPosition) { https://www.wendangku.net/doc/9d18187069.html,stPosition = lastPosition;

}

public String getLastPositionFlag() {

return lastPositionFlag;

}

public void setLastPositionFlag(String lastPositionFlag) { https://www.wendangku.net/doc/9d18187069.html,stPositionFlag = lastPositionFlag;

}

}

Java五子棋游戏源代码(人机对战)

//Java编程:五子棋游戏源代码 import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; import java.io.PrintStream; import javax.swing.JComponent; import javax.swing.JPanel; /* *main方法创建了ChessFrame类的一个实例对象(cf), *并启动屏幕显示显示该实例对象。 **/ public class FiveChessAppletDemo { public static void main(String args[]){ ChessFrame cf = new ChessFrame(); cf.show(); } } /* *类ChessFrame主要功能是创建五子棋游戏主窗体和菜单**/ class ChessFrame extends JFrame implements ActionListener { private String[] strsize={"20x15","30x20","40x30"}; private String[] strmode={"人机对弈","人人对弈"}; public static boolean iscomputer=true,checkcomputer=true; private int width,height; private ChessModel cm; private MainPanel mp; //构造五子棋游戏的主窗体 public ChessFrame() { this.setTitle("五子棋游戏"); cm=new ChessModel(1); mp=new MainPanel(cm); Container con=this.getContentPane(); con.add(mp,"Center"); this.setResizable(false); this.addWindowListener(new ChessWindowEvent()); MapSize(20,15); JMenuBar mbar = new JMenuBar(); this.setJMenuBar(mbar); JMenu gameMenu = new JMenu("游戏");

骑士飞行棋实训报告

山东理工大学计算机学院 实训报告 《DOS界面开发基础实训》 班级 姓名 学号 指导教师 二○一二年七月五日 实训任务书及成绩评定 课题名称骑士飞行棋 Ⅰ、题目的目的和要求: 1、设计目的 本实训是实践性教学环节之一,旨在锻炼学生的实践操作能力和综合应用能力,希望通过案例实践,帮助学生掌握DOS界面的开发和应用,具备熟练使用C语言开发界面、感受游戏开发过程等。 2.要求学生掌握: (1)、C语言的规范、结构和标记。 (2)、数组、链表的定义和使用。 (3)、C语言的程序设计基础、面向对象编程、操作、事件处理和特效,感受游戏的开发过程等 (4)、综合应用各种前台技术开发DOS页面。 2、设计题目要求: 第一部分 游戏端首页 (1)角色的分配及及游戏规则: 游戏规则和传统的飞行棋一样,支持两人对战 采用100格小型游戏棋盘 游戏规则:对战双方轮流掷骰子控制自己的骑兵前进或后退,在游戏棋盘上设置有关卡普通 地雷 暂停 时空隧道

幸运轮盘(提供两种运气:交换位置和轰炸) 棋盘上的关卡只在骑兵第一次移动遇到时有效 (2)棋盘示例: 第二部分:游戏过程 (1)地图显示思路: 将对战地图划分成4个部分分别显示 奇数行:顺序输出地图数组中代号对应图像 右竖行:先输出空格,再输出数组中代号对应图像 偶数行:逆序输出地图数组中代号对应图像 (2)游戏进行中的界面 第三部分:游戏结束,玩家胜负已分 Ⅱ、设计进度及完成情况 日期内容 分析所给题目,初步划分侧重点,并初步制定流程 对所给题目进行详细的研究并细读有关资料 做出所给题目,讨论研究并调试检查错误, 对所给题目进行综合考虑,并进行再次修改 答辩,思考老师的评价 Ⅲ、系统实现--主要功能代码 void Welcome() { printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("操 2.孙权 3.刘备 \n"); printf("请玩家1选择角色:");个玩家轮流掷骰子,如果上轮走到暂停关卡,停掷一次\n\n"); printf("2.若玩家走到幸运轮盘,则和对方交换位置或者对方后退6步\n\n"); printf("3.若玩家走到某格,而对方也在此格,则对方退回原点\n\n"); printf("4.若遇到地雷后退6步\n\n"); printf("5.若遇到暂停则此玩家下一回合停止掷骰子\n\n"); printf("6.若遇到时空隧道再前进10步\n\n");

中班游戏教案《飞行棋》

中班游戏教案《飞行棋》Middle class game lesson plan "flying chess"

中班游戏教案《飞行棋》 前言:教学设计是根据课程标准的要求和教学对象的特点,将教学诸要素有序安排,确定合适的教学方案的设想和计划。一般包括教学目标、教学重难点、教学方法、 教学步骤与时间分配等环节。本教案根据教学设计标准的要求和教学对象的特点, 将教学诸要素有序安排,确定合适的教学方案的设想和计划。便于学习和使用,本 文档下载后内容可按需编辑修改及打印。 【设计意图】 幼儿园中班幼儿的活动能力已经有了很大的提高,能够 自主的跑,跳,并掌握了一定的技巧。根据幼儿的你年龄特点,喜欢小游戏。在游戏中获得知识,这是幼儿教学的一大优势,这节课主要是借助玩飞行棋,发展幼儿的弹跳力,更进一步增进幼儿之间的合作意识和合作技巧。让幼儿在玩中学,在学中玩。 【活动目标】 1、培养幼儿正确的弹跳技巧和小组间的密切配合。 2、增强了幼儿身体素质,强化了幼儿身体协调的能力。【活动准备】 1、飞机头饰若干报纸棍骰子两个平整的场地

2、录音机,磁带《加油》 【活动过程】 教师带幼儿到户外场地,带领幼儿慢跑一圈,指导做简 单的热身动作。 1、导入游戏 老师今天和大家一起来做个新游戏,好不好?(幼儿回答,好)看我手中拿了什么?(幼儿回答,飞机头饰)今天我们就 用它来做游戏,我们今天就可以尝试做一名飞行员的感觉,尝试飞起来的感觉。幼儿感到很新奇,也很期待。老师模拟飞行过程,幼儿观看。 教师首先说明游戏的规则和过程, 在场地上用报纸棍摆成飞行棋的棋盘,幼儿两人一组, 合作进行游戏,其中一名幼儿负责掷骰子。开始有游戏,各“飞机”需要站在起点,当另一名幼儿掷下骰子并读出数字时,扮演飞机的幼儿则必须根据骰子上的数字,向前跳相配的格数,看看谁最先到达棋盘中终点央位置。最后扮演飞机的幼儿可与掷骰子的幼儿交换角色,继续游戏。 2、游戏分组

基于Java五子棋游戏的设计源代码及全套资料

分类号: U D C:D10621-408-(2007)5738-0 密级:公开编号:21 成都信息工程学院 学位论文 基于Java的五子棋游戏的设计 论文作者姓名:赵小龙 申请学位类别:计算机科学与技术 申请学位类别:工学学士 指导教师姓名(职称):吴春旺 论文提交日期:2007年06月10日

基于Java的五子棋游戏的设计 摘要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 关键词:深度搜索;估值;电脑AI;五子棋;算法

Gobang Java-based games design Abstract As a sport, gobang is very popular in civil, in order to become familiar with gobang rules and techniques, and the study of simple artificial intelligence, I decide to use the Java to develope gobang games and complete the two functions including man-machine war and man-man war. Network Connection is Socket Programming for some applications, client and server interaction is definited by Class Message, which is a very good scalability, Client interface is responsible for the collection and maintenance of user input information, and error handling. Server users maintain online basic information and arbitrary two-time users of the chessboard of information, dynamic maintenance user list. During the man-machine players, it improves intelligence of the computer players through depth search and valuation module. Analyzes Module valuation of the precise elements, as well as a number of increased precision, and compares their search for nodes, which raises some computer AI programs on the basis of analysis, such as recursive algorithm, computer learning. Algorithm of procedures contribute to the understanding of the structure, logical thinking ability, In other areas of artificial intelligence has great references. . Key words:Search depth; Valuation; Computer AI; Gobang ; Algorithm

真人趣味飞行棋策划书(定稿)

环境监测系团学活动 策 划 书 主办:长沙环境保护职业技术学院环境监测系 承办:素质拓展实践部 策划:

目录 一、活动名称 (3) 二、活动主题 (3) 三、活动口号 (3) 四、活动宗旨 (3) 五、活动整体方案 (3) 六、具体活动细则简介 (3) 七、奖励规则 (4) 八、活动经费预算 (5) 九、注意事项 (5) 十、附棋盘制作图 (6)

趣味真人飞行棋策划书 一、活动背景 飞行棋,一种从我们孩童时代已经开始风靡全球的益智游戏。现在玩飞行棋更是已经成为大学课余生活的一种趋势。你是否已经玩腻了网络游戏,正在寻找另一种新的刺激?你是不是觉得传统的飞行棋不够创新?那就来参加由素质拓展实践部举办的真人飞行棋大赛吧!无论你是作为棋子还是做为指挥棋子的人,你都可以亲自参与游戏。真人版飞行棋不仅能够让你进入虚拟的游戏世界,感受世界的惊险刺激,更能让你一边游戏一边动脑,真正体验飞行棋的魅力。本次趣味素拓活动的宗旨在于增强各个部门的凝聚力,展示出新时代大学生的蓬勃朝气和竞技热情。弘扬奥运精神,增加团队凝聚力,在这个充满活力与光明的时代,有挑战才有财富。本次的趣味运动会是丰富我系同学的课余生活,给每一位学生展现自我的机会。在学习之余好好锻炼身体,注意各种才能的挖掘、培养与展示,同时增加同学之间、学院之间的交流、并促进友谊为美好的大学生活留下灿烂的一笔财富。 二、活动主题:娱乐身心、激扬青春 三、活动口号:独乐乐,不如“棋”乐乐,棋趣无穷,high起来!! 四、活动宗旨:友谊第一,比赛第二。 五、活动整体方案 活动宣传:晚自习前往各班宣传,晚上前往各寝室宣传 活动举行时间:2013年5月14号中午12:30、5月15号中午12::30 活动地点:学校操场 主办单位:环境监测系素质拓展实践部 活动参与对象:监测系大一各班级 六、具体活动细则简介 参赛者:一个队伍4个人(每队伍以班为单位)每个棋局4个队伍,共16人参赛。比赛分组及比赛首场的站位选择由各班队伍的队长抽签决定。 裁判员:发令1人,记录2人,维持纪律2人。 比赛器材:骰子1枚,自制棋盘1个,口哨2个。 比赛场地:学校操场

五子棋游戏代码(Java语言)

五子棋游戏代码(Java语言) import java.awt.*; import java.awt.event.*; import javax.swing.*; class mypanel extends Panel implements MouseListener { int chess[][] = new int[11][11]; boolean Is_Black_True; mypanel() { Is_Black_True=true; for(int i=0;i<11;i++) { for(int j=0;j<11;j++) { chess[i][j] = 0; } } addMouseListener(this); setBackground(Color.RED); setBounds(0, 0, 360, 360); setVisible(true); } public void mousePressed(MouseEvent e) { int x = e.getX(); int y = e.getY(); if(x < 25 || x > 330 + 25 ||y < 25 || y > 330+25) {return;} if(chess[x/30-1][y/30-1] != 0) {return;} if(Is_Black_True==true) { chess[x/30-1][y/30-1] = 1; Is_Black_True=false; repaint(); Justisewiner(); return; }

if(Is_Black_True==false) { chess[x/30-1][y/30-1]=2; Is_Black_True=true; repaint(); Justisewiner(); return; } } void Drawline(Graphics g) { for(int i=30;i<=330;i+=30) { for(int j = 30;j <= 330; j+= 30) { g.setColor(Color.GREEN); g.drawLine(i, j, i, 330); } } for(int j = 30;j <= 330;j+=30) { g.setColor(Color.GREEN); g.drawLine(30, j, 330, j); } } void Drawchess(Graphics g) { for(int i=0;i < 11;i++) { for(int j = 0;j < 11;j++) { if(chess[i][j] == 1) { g.setColor(Color.BLACK); g.fillOval((i+1)*30-8, (j+1)*30-8, 16, 16); } if(chess[i][j]==2) { g.setColor(Color.WHITE); g.fillOval((i+1)*30-8, (j + 1) * 30-8, 16, 16); }

五子棋报告-java

XXXX大学 XX学院 课程设计报告 课程名称:面向对象程序设计 题目名称:五子棋游戏设计 学生姓名: 专业班级: 指导教师:任晓强

一、课程设计目的与任务(四号、宋体、加黑、顶格) (1)掌握Java编程、面向对象的基础知识。 (2)较熟练地编写Java应用程序Application。 (3)了解Java的常用标准类库、编程技巧、异常处理。 (4)联系已学过的内容,巩固所学的理论,增强独立工作能力。(5)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 (6)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。 课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。 二、课程设计内容 1本设计题目的主要内容 设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能: 1.选择落子的先后顺序 2.重置棋盘 3.刷新重新开始 4.退出提示 并且规定退出者判为负,但退出过程中要有提示。以防不小心点错了。 最后判断某一方是否为五子连珠。 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌(执黑、执白)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负); 2 设计思想与程序构架

程序流程图 程序的功能分配 a. 棋盘的绘制 public void draw_qipan(Graphics G) 添加按钮 Button b1=new Button("开始"); Button b2=new Button("重置游戏"); Label lblWin=new Label(" "); Checkbox ckbHB[]=new Checkbox[3]; Button exist = new Button("退出"); public void init(){ ckbHB[0]=new Checkbox("执白",ckgHB,false); ckbHB[1]=new Checkbox("执黑",ckgHB,false); ckbHB[2]=new Checkbox("观看",ckgHB, false); } c. 鼠标棋子的触发事件 public void mouseClicked(MouseEvent e) { Graphics g=getGraphics(); int x1,y1; x1=(); y1=(); if ()<20 || ()>300 || ()<20 || ()>300) {

跳棋飞行棋规则

跳棋、飞行棋规则 1、跳棋游戏规则 在对局时,由剪刀、石头、布(一次)决定哪一方先走,双方轮流各走一着,每次只能移动一颗棋子,移动方式为:走动一格,或跳跃数格。棋子的移动只允许隔一棋子一跳的通常走法。最先将己方所有棋子移动到对方三角区域的人获胜。平局是指:甲先走,乙后走,乙把所有棋子移到对方三角区域只有晚于甲一步,则判为平局。由于时间关系,平局用剪刀石头布一次性决定胜负。 2、飞行棋游戏规则 棋子的行进 在对局时,由剪刀、石头、布(一次)决定哪一方先掷骰子。 在起点处每人轮流掷骰子一次,只要掷得5点以上的点数就可以起飞(掷得5点时不能再掷)。在游戏进行过程中,掷得 6 点的游戏者可以连续投掷骰子,直至显示点数不是 6 点或游戏结束。 只有当游戏者掷出的点数恰好等于棋子与终点的相差步数时,该棋子方可取得小旗返回停机坪。若大于相差步数,则棋子到达终点后掉头折返走完剩余的步数。 棋子行进到颜色相同的格子内,可直接跳至到前面颜色相同的一格; 棋子若行进到颜色相同而有虚线连接的一格,可照虚线箭头指示的路线,通过虚线到前方颜色相同的的一格后,再跳至下一个与棋子颜色相同的格内;若棋子是由上一个颜色相同的格子跳至颜色相同而有虚线连接的一格内,则棋子照虚线箭头指示的路线,通过虚线到前方颜色相同的的一格后,棋子就不再移动。 “迭子” 的处理 棋子在行进过程中走至一格中,若已有他人棋子先在,则可将他人的棋子逐回停机坪。 自己的棋子走至同一格内,可迭在一起,这类情况称为“ 迭子”。其他游戏者的棋子,不能在迭子上面飞过;当他人的棋子行进到正好停留在迭子棋子上方时,他人棋子与 2 架迭子棋子同时返回停机坪。 若其它游戏者所掷点数大于他的棋子与迭子的相差步数,则多余格数为由迭子处返回的格数。 如果棋子在准备通过虚线时有其他棋子停留在虚线和通往终点线路的交叉点时,如果对方是一个棋子,则将该棋子逐回机场,本方棋子继续行进到对岸;如果对方是两个棋子重叠则该棋子不能穿越虚线、必须绕行。

java骑士飞行棋小游戏

突然想起自己刚学java时,老师让写一个java骑士飞行棋,那时候还不知道写,到处问人,勉强写好了,结果全是放在主函数里,今天闲来没事,花了一会,再次写了个骑士飞行棋小游戏,希望对初学者有帮助吧。 代码中,可能用到了初学者还没接触到的东西,不过都不难,注释都有写明,花点时间就能明白的。 一共三个类。 分别: Game.java Map.java Player.java package ; import ; import ; 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; }

幼儿园中班户外游戏教案 飞行棋

幼儿园中班户外游戏教案飞行棋 以下是带来的幼儿园中班户外游戏教案:飞行棋,欢迎阅读。 幼儿园中班幼儿的活动能力已经有了很大的提高,能够自主的跑,跳,并掌握了一定的技巧。根据幼儿的你年龄特点,喜欢小游戏。在游戏中获得知识,这是幼儿教学的一大优势,这节课主要是借助玩飞行棋,发展幼儿的弹跳力,更进一步增进幼儿之间的合作意识和合作技巧。让幼儿在玩中学,在学中玩。 1、培养幼儿正确的弹跳技巧和小组间的密切配合。 2、增强了幼儿身体素质,强化了幼儿身体协调的能力。 1、飞机头饰若干报纸棍骰子两个平整的场地 2、录音机,磁带《加油》 教师带幼儿到户外场地,带领幼儿慢跑一圈,指导做简单的热身动作。 1、导入游戏老师今天和大家一起来做个新游戏,好不好?(幼儿回答,好)看我手中拿了什么?(幼儿回答,飞机头饰)今天我们就用它

来做游戏,我们今天就可以尝试做一名飞行员的感觉,尝试飞起来的感觉。幼儿感到很新奇,也很期待。老师模拟飞行过程,幼儿观看。 教师首先说明游戏的规则和过程,在场地上用报纸棍摆成飞行棋的棋盘,幼儿两人一组,合作进行游戏,其中一名幼儿负责掷骰子。开始有游戏,各"飞机"需要站在起点,当另一名幼儿掷下骰子并读出数字时,扮演飞机的幼儿则必须根据骰子上的数字,向前跳相配的格数,看看谁最先到达棋盘中终点央位置。最后扮演飞机的幼儿可与掷骰子的幼儿交换角色,继续游戏。 2、游戏分组将全班幼儿分成两个小组,站成两排,每组的两个幼儿配合进行游戏,第一个幼儿开始游戏 3、开始游戏幼儿准备好以后,哨声一响,游戏就开始。 4、活动结束对表现优异者表扬鼓励,教师做及时总结活动反思在这个游戏中,幼儿体验了飞的感觉,也在心理上得到了满足,同时幼儿们在配合中增长了知识,锻炼了身体,养成了守规则好习惯,数学思维也得到了好的锻炼和培养。 模板,内容仅供参考

基于JAVA的五子棋游戏系统设计与实现

基于JAVA的五子棋游戏系统设计与实 现

基于JAVA的五子棋游戏系统设计与实现专业电子信息工程 学生董永杰 指导教师曾玉

摘要 当前,随着计算机网络的的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,已经成为多数人群的休闲方式,也为多数人所喜好。当然,为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机和网络的双功能。 本软件使用JAVA语户端之间的连接,利用多线程技术言实现,经过对图形界面,绘图,布局管理器等去构造出游戏的单机功能,在此基础上,利用SCOKET的知识,建立起服务器与客来处理服务器端与客户端之间的数据传输,通信问题,使得客户端和服务器端之间能够同步的进行处理。 经过对软件的编写,更深入的理解了面向对象的概念,也体会到利用面向对象语言处理一些问题的优势。同时也加深了对多线程,流套接字等高级技术的理解。 关键词:多线程;流套接字;数据传输;同步。

ABSTRACT At present, With the rapid development of computer network. Taking computer technology and the network technology as the core, modern network technology is already used in the real life and the production and already became the leisure mode of the most people. And most people like them. Of course, it’s a pity that there still have some clients lacking of network because of various causes. In order to satisfy the above clients’ requirements. A large number of games ,usually nam ed as “small games” by players, are designed for involving two kinds of different function. The former game is often played by these players whose computers never connect with the network. It’s called for stand-alone version games. Just as its name implies, the later is named as online version games This software implemented with JAVA language, and according to the understanding of SCOKET ,GUI and paint image ichnology. Established in these foundation , the server co ects with the multi- client, and transmission the information between many clients using the multi-thread proceeding technology. it is very convenient for both client and server to do the synchronous processing. Through to the software compilation, deepen understanding and grasp to the technology above understanding and holding.

飞行棋游戏规则

飞行棋游戏规则: 起飞 只有在掷得6点后,方可将一枚棋子由“基地”起飞至起飞点,并可以再掷骰子一次,确定棋子的前进步数。 连投奖励 在游戏进行过程中,掷得6点的游戏者可以连续投掷骰子,直至显示点数不是6点或游戏结束。 跳跃规则 当飞机主动飞至和自己同色的方块上时,会跳跃飞行到下一个同色方块上,如果下一个同色方块联接着快速通道,则直接飞过快速通道。 撞机规则 飞机在行进过程中走至一格时,若已有敌方飞机停留,可将敌方的飞机撞回基地。 迭机规则 2架或者多架飞机走在同一格内,叠在一起时称为迭机。

相同颜色的飞机,或者组队时同队玩家的飞机,走在同一格时也可以迭机。 若前方有敌方的飞机迭机,可出现以下3种情况: (a) 我方飞机正好停留在迭机上方时,发生撞机,所有飞机都返回停机坪。 (b) 若我方所掷点数是6,且自己飞机与前方迭机的距离小于6时,我方的飞机将停在迭机上面。下次投出骰子后将自动走这架停在迭机上的飞机。 (c)若我方所掷点数不是6点,而且自己飞机与前方迭机的距离小于6时,那么我方的飞机不能在迭机上面飞过;需要倒退剩余的步数。 飞棋 棋子若行进到颜色相同而有虚线连接的一格,可照虚线箭头指示的路线,通过虚线到前方颜色相同的的一格后,再跳至下一个与棋子颜色相同的格内;若棋子是由上一个颜色相同的格子跳至颜色相同而有虚线连接的一格内,则棋子照虚线箭头指示的路线,通过虚线到前方颜色相同的一格后,棋子就不再移动。 终点

玩家飞机飞至终点时,这架飞机就完成任务,抢先将所有飞机飞至终点的玩家队伍(若自由人就是玩家个人)胜利。传统飞行棋规则里,玩家要刚好走到终点处才能算“到达”,如果玩家扔出的骰子点数无法刚好走到终点出,多出来的点数,棋子将往回走。

java五子棋小游戏实验报告(附源代码)

手机五子棋游戏的设计与实 现 专业: 姓名: 班级: 学号: 指导教师:

J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项开发技术。它因其“write once,run anywhere”的Java特性而提高了开发的效率。随着手机性能的不断提高,手机休闲娱乐应用将成为PC休闲娱乐应用之后又一重要业务增长点。棋类游戏规则单一,比较适合在手机等便携终端推广。 由于具有跨平台、易于移植、占用空间小的优势,J2ME成为移动应用开发平台的主流,并提供了很多用以支持移动应用软件的开发的API。现将该技术用于这次的手机游戏开发,可以实现游戏的快速开发,不但便于查看游戏运行过程中内存的占用量和程序的每一部分代码消耗了多少处理器时间,而且可以不断地优化代码,使代码具有高度的复用性、可扩展性、可维护性。 游戏的开发以J2ME为平台,利用Java技术,结合J2ME的MIDP技术,并对于程序设计思想,重要类、方法等展开讨论。在对弈部分,分析设计走棋算法,选择合适的方式组织成代码,实现基本的人工智能。过程中使用了J2ME中的CLDC/MIDP软件体系,主要运用了MID Profile的特定类的支持,来完成游戏的开发。 关键词:J2ME;CLDC;MIDP

J2ME is a kind of fast developing technology implemented on various devices especially mobile communication equipments. It improves the efficiency of the development process because of its "write once, run anywhere" nature. The development trend of the entertainment market based on the cell phone is very obvious because the handset performance enhances unceasingly. The entertainment market based on the cell phone will to be the new important business growth point follow the PC entertainment market. As the rules of a single chess game, it is more suitable for mobile phones and other portable terminal extension. J2ME has been the preferred platform for development because of its platform independent and compatibility, and provides a lot of APIs to support the development of mobile application software. The technology for mobile game development, can achieve the rapid development of the game. It is not only easy to observe the memory consumption and processor consumed time during the operation of the game, but also can optimize the code, so that the code has a high degree of reusability, scalability, maintainability. The game has designed by J2ME, the Java technology and the MIDP technology. I studied the procedure thought, the important class and the method. In the playing chess part, I have analyzed the algorithm, choosed the appropriate way to organize the code and realized the basic artificial intelligence. On the other hand,I learned software system of CLDC/MIDP and the specific class of the MID Profile to complete the game development. Key words: J2ME;CLDC;MIDP

骑士飞行棋实训报告

骑士飞行棋实训报告文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]

山东理工大学计算机学院 实训报告 《DOS界面开发基础实训》 班级 姓名 学号 指导教师 二○一二年七月五日 实训任务书及成绩评定 课题名称骑士飞行棋 Ⅰ、题目的目的和要求: 1、设计目的 本实训是实践性教学环节之一,旨在锻炼学生的实践操作能力和综合应用能力,希望通过案例实践,帮助学生掌握DOS界面的开发和应用,具备熟练使用C 语言开发界面、感受游戏开发过程等。 2.要求学生掌握: (1)、C语言的规范、结构和标记。 (2)、数组、链表的定义和使用。 (3)、C语言的程序设计基础、面向对象编程、操作、事件处理和特效,感受游戏的开发过程等 (4)、综合应用各种前台技术开发DOS页面。 2、设计题目要求: 第一部分 游戏端首页 (1)角色的分配及及游戏规则: 游戏规则和传统的飞行棋一样,支持两人对战 采用100格小型游戏棋盘

游戏规则:对战双方轮流掷骰子控制自己的骑兵前进或后退,在游戏棋盘上设置有关卡 普通 地雷 暂停 时空隧道 幸运轮盘(提供两种运气:交换位置和轰炸) 棋盘上的关卡只在骑兵第一次移动遇到时有效 (2)棋盘示例: 第二部分:游戏过程 (1)地图显示思路: 将对战地图划分成4个部分分别显示 奇数行:顺序输出地图数组中代号对应图像 右竖行:先输出空格,再输出数组中代号对应图像 偶数行:逆序输出地图数组中代号对应图像 (2)游戏进行中的界面 第三部分:游戏结束,玩家胜负已分 Ⅱ、设计进度及完成情况 日期内容 7.1分析所给题目,初步划分侧重点,并初步制定流程 7.2对所给题目进行详细的研究并细读有关资料 7.3做出所给题目,讨论研究并调试检查错误, 7.4对所给题目进行综合考虑,并进行再次修改 7.5答辩,思考老师的评价

五子棋(JAVA版)实习报告及原代码

实习报告 课程名称信息系统认知实习实习题目java五子棋专业 班级 学号 学生姓名 实习成绩 指导教师 2010年1月 前言

摘要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 1引言 1.1课题背景 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称之为Gobang或FIR(Five in a Row 的缩写),亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际 比赛棋。 Java语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的 实现成为了可能。 1.2本课题研究的意义 近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表;其它像围棋的“手淡”、象棋的“将族”

飞行棋第一课时

第课时——飞行棋之数学飞行棋玩法 时间授课者: 教学目标 1、让学生用已有的知识,完成两个数学游戏,进一步梳理和巩固这些指示,充分感受数学 与日常生活的紧密联系,学会用数学的眼光去观察和认识周围的事务,培养数学意识,体会数学乐趣。 2、学会多角度思考问题,多途径地探索解决问题,感受解决问题策略的多样化和优化。 3、在解决问题的过程中初步学会与人合作。 教学过程: 一、引入: 师介绍“数学飞行棋”的名称、“数的组成”玩法。(具体见下图示) 二、玩数的组成: 1、玩“8的组成”,黑方先下。 (1)学生下棋,教师巡视指导,并表扬相互谦让学生。 (2)小结。教师发现有一组学生玩的方法有点不一样,我们一起看看他们是怎样玩“8的组成”的。(请一组学生上来演示玩法:一边玩一边说数的组成) 2、学生玩“9、10的组成”。 三、玩“数学飞行棋”: 1、过渡 师:看来第一个游戏太简单了,难不倒你们,下面我们再来玩一个难一点的游戏,比赛数学飞行棋。三颗棋子选择不同的路线,谁先以最快的速度全部走出来,谁就获胜,就可以从对方那里赢得一颗棋子。在比赛之前我们先来猜一猜,你们觉得同桌之间谁会赢? 2、比赛开始。 3、巡视,请有好方法的孩子上来说一说方法。 4、师:你们赢了还是输了?(说明比赛你有可能会赢也有可能会输。) 四、小结:这节课很多同学都表现不错,我们应该向他们学习。这节课,你们玩得开心吗? 五、布置作业:请比较数学飞行棋与常见的飞行棋有什么异同点?你能说说吗?

第课时——飞行棋游戏之简介 时间授课者: 教学目标 熟悉飞行棋游戏的发展过程,了解行进基本规则 教学过程: 一、飞行棋游戏简介:飞行棋作为最受欢迎的小游戏之一,是由四种颜色组成的,上面画有飞机的图形,最多可以四个人各拿一种颜色一起玩。飞行棋里有一个骰子,骰子是正方体的,有六个面分别是一个点、二个点、三个点、四个点、五个点和六个点。你只要转动骰子,骰子停下来的时候正面是几,你就走几步。但是刚开始时只有投到六,你的飞机才能起飞,并且投到六你还有机会再投一次。(说明:到终点时走的步数要正好到达才算胜利,不然要返回来走。) 二、飞行棋历史:关于飞行棋发明的年代和发明人,在网络上似乎还没有相关的线索。比较一致的意见是他至少发明于大约二战以后,因为它是关于飞行的(FLIGHT GAME)。但也有人认为这一点没有说服力,因为它有可能是先有了规则再被冠上了飞行棋的名字,在飞机发明前就出现这一游戏是完全可能的。 三、飞行棋游戏规则: 1、游戏人数:四人 2、棋盘、棋子:每位游戏者有四架飞机,飞机的颜色在游戏开始时由系统随机确定,共 红、黄、蓝、绿四种。棋盘中的红、黄、蓝、绿色块,与各位游戏者的飞机颜色相对应。 3、飞行棋棋子的行进:在掷得6点后,方可将一架飞机由"停机坪"起飞至起飞点,并可 以再掷骰子一次,确定飞机的前进步数;在游戏进行过程中,掷得6点的游戏者可以连续投掷骰子,直至显示点数不是6点或游戏结束。飞机依照箭头所示方向,照外围飞完一周后,再至自己面前时,直向中间目的地飞去。只有当游戏者掷出的点数恰好等于飞机与终点的相差步数时,该飞机方可取得小旗返回停机坪。若大于相差步数,则飞机到达终点后掉头折返走完剩余的步数。飞机行进到颜色相同的格子内,可直接跳至到前面颜色相同的一格,机会一次;飞机若行进到颜色相同而有虚线连接的一格,可照虚线箭头指示的路线,通过虚线到前方颜色相同的的一格后,再跳至下一个与飞机颜色相同的格内;若飞机是由上一个颜色相同的格子跳至颜色相同而有虚线连接的一格内,则飞机照虚线箭头指示的路线,通过虚线到前方颜色相同的的一格后,飞机就不再移动,若正好在起飞点有飞机停留,那么将对方的飞机逐回停机坪,本方飞机停留。 四、学生找同伴玩游戏,教师分好棋子并同学生一起参与下棋。 五、课堂小结:你今天游戏是输还是赢了?有什么心里话要和大家说说吗? 六、布置作业:上网查找飞行棋游戏中,有那些需要特殊处理的地方?并作好记录下节课交流。

相关文档