javascript课程设计报告博客园(javascript课程介绍)

http://www.itjxue.com  2023-02-03 16:35  来源:未知  点击次数: 

!高分跪求帮忙写一个简单小程序的JAVA课程设计报告(内详!!)

连连看java源代码

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class lianliankan implements ActionListener

{

JFrame mainFrame; //主面板

Container thisContainer;

JPanel centerPanel,southPanel,northPanel; //子面板

JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组

JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮

JLabel fractionLable=new JLabel("0"); //分数标签

JButton firstButton,secondButton; //分别记录两次被选中的按钮

int grid[][] = new int[8][7];//储存游戏按钮位置

static boolean pressInformation=false; //判断是否有按钮被选中

int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标

int i,j,k,n;//消除方法控制

public void init(){

mainFrame=new JFrame("JKJ连连看");

thisContainer = mainFrame.getContentPane();

thisContainer.setLayout(new BorderLayout());

centerPanel=new JPanel();

southPanel=new JPanel();

northPanel=new JPanel();

thisContainer.add(centerPanel,"Center");

thisContainer.add(southPanel,"South");

thisContainer.add(northPanel,"North");

centerPanel.setLayout(new GridLayout(6,5));

for(int cols = 0;cols 6;cols++){

for(int rows = 0;rows 5;rows++ ){

diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1]));

diamondsButton[cols][rows].addActionListener(this);

centerPanel.add(diamondsButton[cols][rows]);

}

}

exitButton=new JButton("退出");

exitButton.addActionListener(this);

resetButton=new JButton("重列");

resetButton.addActionListener(this);

newlyButton=new JButton("再来一局");

newlyButton.addActionListener(this);

southPanel.add(exitButton);

southPanel.add(resetButton);

southPanel.add(newlyButton);

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));

northPanel.add(fractionLable);

mainFrame.setBounds(280,100,500,450);

mainFrame.setVisible(true);

}

public void randomBuild() {

int randoms,cols,rows;

for(int twins=1;twins=15;twins++) {

randoms=(int)(Math.random()*25+1);

for(int alike=1;alike=2;alike++) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

while(grid[cols][rows]!=0) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

}

this.grid[cols][rows]=randoms;

}

}

}

public void fraction(){

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));

}

public void reload() {

int save[] = new int[30];

int n=0,cols,rows;

int grid[][]= new int[8][7];

for(int i=0;i=6;i++) {

for(int j=0;j=5;j++) {

if(this.grid[i][j]!=0) {

save[n]=this.grid[i][j];

n++;

}

}

}

n=n-1;

this.grid=grid;

while(n=0) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

while(grid[cols][rows]!=0) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

}

this.grid[cols][rows]=save[n];

n--;

}

mainFrame.setVisible(false);

pressInformation=false; //这里一定要将按钮点击信息归为初始

init();

for(int i = 0;i 6;i++){

for(int j = 0;j 5;j++ ){

if(grid[i+1][j+1]==0)

diamondsButton[i][j].setVisible(false);

}

}

}

public void estimateEven(int placeX,int placeY,JButton bz) {

if(pressInformation==false) {

x=placeX;

y=placeY;

secondMsg=grid[x][y];

secondButton=bz;

pressInformation=true;

}

else {

x0=x;

y0=y;

fristMsg=secondMsg;

firstButton=secondButton;

x=placeX;

y=placeY;

secondMsg=grid[x][y];

secondButton=bz;

if(fristMsg==secondMsg secondButton!=firstButton){

xiao();

}

}

}

public void xiao() { //相同的情况下能不能消去。仔细分析,不一条条注释

if((x0==x (y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)(y0==y))){ //判断是否相邻

remove();

}

else{

for (j=0;j7;j++ ) {

if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空

if (yj) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边

for (i=y-1;i=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮

if (grid[x][i]!=0) {

k=0;

break;

}

else{ k=1; } //K=1说明通过了第一次验证

}

if (k==1) {

linePassOne();

}

}

if (yj){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边

for (i=y+1;i=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮

if (grid[x][i]!=0){

k=0;

break;

}

else { k=1; }

}

if (k==1){

linePassOne();

}

}

if (y==j ) {

linePassOne();

}

}

if (k==2) {

if (x0==x) {

remove();

}

if (x0x) {

for (n=x0;n=x-1;n++ ) {

if (grid[n][j]!=0) {

k=0;

break;

}

if(grid[n][j]==0 n==x-1) {

remove();

}

}

}

if (x0x) {

for (n=x0;n=x+1 ;n-- ) {

if (grid[n][j]!=0) {

k=0;

break;

}

if(grid[n][j]==0 n==x+1) {

remove();

}

}

}

}

}

for (i=0;i8;i++ ) { //列

if (grid[i][y0]==0) {

if (xi) {

for (j=x-1;j=i ;j-- ) {

if (grid[j][y]!=0) {

k=0;

break;

}

else { k=1; }

}

if (k==1) {

rowPassOne();

}

}

if (xi) {

for (j=x+1;j=i;j++ ) {

if (grid[j][y]!=0) {

k=0;

break;

}

else { k=1; }

}

if (k==1) {

rowPassOne();

}

}

if (x==i) {

rowPassOne();

}

}

if (k==2){

if (y0==y) {

remove();

}

if (y0y) {

for (n=y0;n=y-1 ;n++ ) {

if (grid[i][n]!=0) {

k=0;

break;

}

if(grid[i][n]==0 n==y-1) {

remove();

}

}

}

if (y0y) {

for (n=y0;n=y+1 ;n--) {

if (grid[i][n]!=0) {

k=0;

break;

}

if(grid[i][n]==0 n==y+1) {

remove();

}

}

}

}

}

}

}

public void linePassOne(){

if (y0j){ //第一按钮同行空按钮在左边

for (i=y0-1;i=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮

if (grid[x0][i]!=0) {

k=0;

break;

}

else { k=2; } //K=2说明通过了第二次验证

}

}

if (y0j){ //第一按钮同行空按钮在与第二按钮之间

for (i=y0+1;i=j ;i++){

if (grid[x0][i]!=0) {

k=0;

break;

}

else{ k=2; }

}

}

}

public void rowPassOne(){

if (x0i) {

for (j=x0-1;j=i ;j-- ) {

if (grid[j][y0]!=0) {

k=0;

break;

}

else { k=2; }

}

}

if (x0i) {

for (j=x0+1;j=i ;j++ ) {

if (grid[j][y0]!=0) {

k=0;

break;

}

else { k=2; }

}

}

}

public void remove(){

firstButton.setVisible(false);

secondButton.setVisible(false);

fraction();

pressInformation=false;

k=0;

grid[x0][y0]=0;

grid[x][y]=0;

}

public void actionPerformed(ActionEvent e) {

if(e.getSource()==newlyButton){

int grid[][] = new int[8][7];

this.grid = grid;

randomBuild();

mainFrame.setVisible(false);

pressInformation=false;

init();

}

if(e.getSource()==exitButton)

System.exit(0);

if(e.getSource()==resetButton)

reload();

for(int cols = 0;cols 6;cols++){

for(int rows = 0;rows 5;rows++ ){

if(e.getSource()==diamondsButton[cols][rows])

estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);

}

}

}

public static void main(String[] args) {

lianliankan llk = new lianliankan();

llk.randomBuild();

llk.init();

}

}

//old 998 lines

//new 318 lines

参考资料:

javascript 计时器的工作原理怎么实现博客园

首先获取当前的时间戳,然后设定将来的时间,获取将来的时间戳,二者相减得出时间差,再对其进行处理

课程设计:使用JavaScript制作一个网页上的贪吃蛇游戏

html

head

title贪吃蛇 Snake v2.4/title

style

body{

font-size:9pt;

}

table{

border-collapse: collapse;

border:solid #333 1px;

}

td{

height: 10px;

width: 10px;

font-size: 0px;

}

.filled{

background-color:blue;

}

/style

/head

script

function $(id){return document.getElementById(id);}

/**************************************************************

* javascript贪吃蛇 v2.4 br /

* author: sunxing007 05/14/2009br /

* 转载请注明来自 谢谢!br /

* v2.4修正了蛇身颜色可以随着蛇前进而移动

**************************************************************/

//贪吃蛇类

var Snake = {

tbl: null,

/**

* body: 蛇身,数组放蛇的每一节,

* 数据结构{x:x0, y:y0, color:color0},

* x,y表示坐标,color表示颜色

**/

body: [],

//当前移动的方向,取值0,1,2,3, 分别表示向上,右,下,左, 按键盘方向键可以改变它

direction: 0,

//定时器

timer: null,

//速度

speed: 250,

//是否已经暂停

paused: true,

//行数

rowCount: 30,

//列数

colCount: 30,

//初始化

init: function(){

var colors = ['red','orange','yellow','green','blue','purple','#ccc'];

this.tbl = $("main");

var x = 0;

var y = 0;

var colorIndex = 0;

//产生初始移动方向

this.direction = Math.floor(Math.random()*4);

//构造table

for(var row=0;rowthis.rowCount;row++){

var tr=this.tbl.insertRow(-1);

for(var col=0;colthis.colCount;col++) {

var td=tr.insertCell(-1);

}

}

//产生20个松散节点

for(var i=0; i10; i++){

x = Math.floor(Math.random()*this.colCount);

y = Math.floor(Math.random()*this.rowCount);

colorIndex = Math.floor(Math.random()*7);

if(!this.isCellFilled(x,y)){

this.tbl.rows[y].cells[x].style.backgroundColor = colors[colorIndex];

}

}

//产生蛇头

while(true){

x = Math.floor(Math.random()*this.colCount);

y = Math.floor(Math.random()*this.rowCount);

if(!this.isCellFilled(x,y)){

this.tbl.rows[y].cells[x].style.backgroundColor = "black";

this.body.push({x:x,y:y,color:'black'});

break;

}

}

this.paused = true;

//添加键盘事件

document.onkeydown= function(e){

if (!e)e=window.event;

switch(e.keyCode | e.which | e.charCode){

case 13: {

if(Snake.paused){

Snake.move();

Snake.paused = false;

}

else{

//如果没有暂停,则停止移动

Snake.pause();

Snake.paused = true;

}

break;

}

case 37:{//left

//阻止蛇倒退走

if(Snake.direction==1){

break;

}

Snake.direction = 3;

break;

}

case 38:{//up

//快捷键在这里起作用

if(event.ctrlKey){

Snake.speedUp(-20);

break;

}

if(Snake.direction==2){//阻止蛇倒退走

break;

}

Snake.direction = 0;

break;

}

case 39:{//right

if(Snake.direction==3){//阻止蛇倒退走

break;

}

Snake.direction = 1;

break;

}

case 40:{//down

if(event.ctrlKey){

Snake.speedUp(20);

break;

}

if(Snake.direction==0){//阻止蛇倒退走

break;

}

Snake.direction = 2;

break;

}

}

}

},

//移动

move: function(){

this.timer = setInterval(function(){

Snake.erase();

Snake.moveOneStep();

Snake.paint();

}, this.speed);

},

//移动一节身体

moveOneStep: function(){

if(this.checkNextStep()==-1){

clearInterval(this.timer);

alert("Game over!\nPress Restart to continue.");

return;

}

if(this.checkNextStep()==1){

var _point = this.getNextPos();

var _x = _point.x;

var _y = _point.y;

var _color = this.getColor(_x,_y);

this.body.unshift({x:_x,y:_y,color:_color});

//因为吃了一个食物,所以再产生一个食物

this.generateDood();

return;

}

//window.status = this.toString();

var point = this.getNextPos();

//保留第一节的颜色

var color = this.body[0].color;

//颜色向前移动

for(var i=0; ithis.body.length-1; i++){

this.body[i].color = this.body[i+1].color;

}

//蛇尾减一节, 蛇尾加一节,呈现蛇前进的效果

this.body.pop();

this.body.unshift({x:point.x,y:point.y,color:color});

//window.status = this.toString();

},

//探寻下一步将走到什么地方

pause: function(){

clearInterval(Snake.timer);

this.paint();

},

getNextPos: function(){

var x = this.body[0].x;

var y = this.body[0].y;

var color = this.body[0].color;

//向上

if(this.direction==0){

y--;

}

//向右

else if(this.direction==1){

x++;

}

//向下

else if(this.direction==2){

y++;

}

//向左

else{

x--;

}

//返回一个坐标

return {x:x,y:y};

},

//检查将要移动到的下一步是什么

checkNextStep: function(){

var point = this.getNextPos();

var x = point.x;

var y = point.y;

if(x0||x=this.colCount||y0||y=this.rowCount){

return -1;//触边界,游戏结束

}

for(var i=0; ithis.body.length; i++){

if(this.body[i].x==xthis.body[i].y==y){

return -1;//碰到自己的身体,游戏结束

}

}

if(this.isCellFilled(x,y)){

return 1;//有东西

}

return 0;//空地

},

//擦除蛇身

erase: function(){

for(var i=0; ithis.body.length; i++){

this.eraseDot(this.body[i].x, this.body[i].y);

}

},

//绘制蛇身

paint: function(){

for(var i=0; ithis.body.length; i++){

this.paintDot(this.body[i].x, this.body[i].y,this.body[i].color);

}

},

//擦除一节

eraseDot: function(x,y){

this.tbl.rows[y].cells[x].style.backgroundColor = "";

},

paintDot: function(x,y,color){

this.tbl.rows[y].cells[x].style.backgroundColor = color;

},

//得到一个坐标上的颜色

getColor: function(x,y){

return this.tbl.rows[y].cells[x].style.backgroundColor;

},

//用于调试

toString: function(){

var str = "";

for(var i=0; ithis.body.length; i++){

str += "x:" + this.body[i].x + " y:" + this.body[i].y + " color:" + this.body[i].color + " - ";

}

return str;

},

//检查一个坐标点有没有被填充

isCellFilled: function(x,y){

if(this.tbl.rows[y].cells[x].style.backgroundColor == ""){

return false;

}

return true;

},

//重新开始

restart: function(){

if(this.timer){

clearInterval(this.timer);

}

for(var i=0; ithis.rowCount;i++){

this.tbl.deleteRow(0);

}

this.body = [];

this.init();

this.speed = 250;

},

//加速

speedUp: function(time){

if(!this.paused){

if(this.speed+time10||this.speed+time2000){

return;

}

this.speed +=time;

this.pause();

this.move();

}

},

//产生食物。

generateDood: function(){

var colors = ['red','orange','yellow','green','blue','purple','#ccc'];

var x = Math.floor(Math.random()*this.colCount);

var y = Math.floor(Math.random()*this.rowCount);

var colorIndex = Math.floor(Math.random()*7);

if(!this.isCellFilled(x,y)){

this.tbl.rows[y].cells[x].style.backgroundColor = colors[colorIndex];

}

}

};

/script

body onload="Snake.init();"

/*************************************************************br /

* javascript贪吃蛇 v2.4br /

* author: sunxing007 05/14/2009br /

* 转载请注明来自 a href="";/a 谢谢!br /

**************************************************************/br /

table id="main" border="1" cellspacing="0" cellpadding="0"/table

input type="button" id="btn" value="开始/暂停" /点左边按钮或按Enter开始/暂停游戏br /

input type="button" id="reset" value="重新开始" /br /

input type="button" id="upSpeed" value="加速" /点左边按钮或按Ctrl + ↑加速br /

input type="button" id="downSpeed" value="减速" /点左边按钮或按Ctrl + ↓减速

script

$('btn').onclick = function(){

if(Snake.paused){

Snake.move();

Snake.paused = false;

}

else{

Snake.pause();

Snake.paused = true;

}

};

$("reset").onclick = function(){

Snake.restart();

this.blur();

};

$("upSpeed").onclick = function(){

Snake.speedUp(-20);

};

$("downSpeed").onclick = function(){

Snake.speedUp(20);

};

/script

/body

/html

(责任编辑:IT教学网)

更多

推荐Flash动画文章