Foros del Web » Programación para mayores de 30 ;) » Java »

juego de la culebrita (snake)

Estas en el tema de juego de la culebrita (snake) en el foro de Java en Foros del Web. buenas, este codigo es del juego clasico de la culebrita (snake), no c asusten por el codigo lo unico que quiero hacer es q el ...
  #1 (permalink)  
Antiguo 15/02/2012, 00:11
 
Fecha de Ingreso: febrero-2012
Mensajes: 84
Antigüedad: 12 años, 2 meses
Puntos: 3
juego de la culebrita (snake)

buenas, este codigo es del juego clasico de la culebrita (snake), no c asusten por el codigo lo unico que quiero hacer es q el juego tenga un final, osea en la casilla score q va aumentando de 1 en 1 cuando llegue a 5 por ejemplo de el mismo msj de game over y se detenga el juego, para ver si alguien puede ayudarme con eso.

este es el codigo lo sombreado en rojo es el msj de game over:


function cbsnake(){

//Pixels to move at once
this.jump = 8;
//Size of snake. Make this one less than jump. Doesn't have to be,but adds good effect
this.sos = 7;
//Size of board
//DANGER!!! this.sofb must be EVENLY dividable by this.jump DANGER!!!!
this.sofb = 400;
//Set things up
this.daway = this.sofb - this.jump;
this.correct = new Array();
this.correct[0] = 0;
while(this.correct[this.correct.length -1] != this.daway){
this.correct[this.correct.length] = this.correct[this.correct.length -1]+this.jump
}
this.zero = 0;
var gameboard = ' <div class="board" id="board"> <div id="i2"> </div> </div><div class="board" id="score"> <span id="cscore">0</span> <span id="buttons"> <button type="button" id="fast" onClick="snake.fast()">Fast</button> </span></div>';
document.write(gameboard);
}

cbsnake.prototype.setup = function(setspeed){
var thisObj = this;
//Score...
this.score = 0;
//Snake Direction
this.sdir = 'none';
this.sdirb = 'none';
this.sdirp = 'none';
//Snake arrays
this.ctop = new Array();
this.cleft = new Array();
//Top of snake class
this.ctop[0] = 200;
this.ctop[1] = -8;
//Left of Snake class
this.cleft[0] = 200;
this.cleft[1] = -8;
//current top of apple
this.atop = 0;
//current left of apple
this.aleft = 0;
//Milliseconds between move
this.speed = setspeed;
document.getElementById('board').innerHTML = '<div id="apple"></div><div id="snake0" class="snake"></div><div id="snake1" class="snake"></div>';
this.moveapple();
this.stopgame = false;
setTimeout(function(){ thisObj.msnake() },this.speed);
document.onkeydown = function(e){ return thisObj.snakedir(e); };
}
cbsnake.prototype.slow = function(){
this.setup(100);
this.buttons('true');
document.getElementById('slow').blur();
}
cbsnake.prototype.medium = function(){
this.setup(70);
this.buttons('true');
document.getElementById('medium').blur();
}
cbsnake.prototype.fast = function(){
this.setup(50);
this.buttons('true');
document.getElementById('fast').blur();
}
cbsnake.prototype.rannum = function(num1,num2){
num1 = parseInt(num1);
num2 = parseInt(num2);
var generator = Math.random()*(Math.abs(num2-num1));
generator = Math.round(num1+generator);
return generator;
}
cbsnake.prototype.moveapple = function(){
var usethis = false;
while(!usethis){
this.atop = this.correct[this.rannum(0,this.correct.length-1)];
this.aleft = this.correct[this.rannum(0,this.correct.length-1)];
if(this.numInArray(this.ctop,this.cleft,this.atop, this.aleft) == 0){
usethis = true;
}
}
document.getElementById('apple').style.top = this.atop+"px";
document.getElementById('apple').style.left = this.aleft+"px";
}
cbsnake.prototype.snakedir = function(e){
if(!e){
//IE...
e = window.event;
}
switch(e.keyCode){
case 38:
if(this.sdir != 'down' && this.sdirp != 'down'){
this.sdirb = 'up';
this.sdirp = 'up';
}
break;
case 40:
if(this.sdir != 'up' && this.sdirp != 'up'){
this.sdirb = 'down';
this.sdirp = 'down';
}
break;
case 37:
if(this.sdir != 'right' && this.sdirp != 'right'){
this.sdirb = 'left';
this.sdirp = 'left';
}
break;
case 39:
if(this.sdir != 'left' && this.sdirp != 'left'){
this.sdirb = 'right';
this.sdirp = 'right';
}
break;
case 32:
if(this.sdir == 'none' && this.sdirp != 'none'){
this.sdirb = this.sdirp;
this.sdirp = 'none';
}
else{
this.sdirp = this.sdir;
this.sdirb = 'none';
}
break;
}
return this.stopgame;

}
cbsnake.prototype.msnake = function(){
if(this.stopgame === false){
if(this.sdir != 'none'){
this.moveall();
}
var thisObj = this;
switch(this.sdir){
case 'up':
this.ctop[0] = this.ctop[0] - this.jump;
document.getElementById('snake0').style.top = this.ctop[0]+"px";
if((this.ctop[0] == this.zero && this.sdirb == 'up') || this.ctop[0] < this.zero){
this.gover();
}
break;
case 'down':
this.ctop[0] = this.ctop[0] + this.jump;
document.getElementById('snake0').style.top = this.ctop[0]+"px";
if((this.ctop[0] == this.daway && this.sdirb == 'down') || this.ctop[0] > this.daway){
this.gover();
}
break;
case 'left':
this.cleft[0] = this.cleft[0] - this.jump;
document.getElementById('snake0').style.left = this.cleft[0]+"px";
if((this.cleft[0] == this.zero && this.sdirb == 'left') || this.cleft[0] < this.zero){
this.gover();
}
break;
case 'right':
this.cleft[0] = this.cleft[0] + this.jump;
document.getElementById('snake0').style.left = this.cleft[0]+"px";
if((this.cleft[0] == this.daway && this.sdirb == 'right') || this.cleft[0] > this.daway){
this.gover();
}
break;
}
if(this.sdir != 'none'){
this.hitself();
this.happle();
}
this.sdir = this.sdirb
setTimeout(function(){ thisObj.msnake() },this.speed);
}
}
cbsnake.prototype.gover = function(){
if(!this.stopgame){
this.stopgame = true;
var inner = document.getElementById('board').innerHTML;
document.getElementById('board').innerHTML = inner+'<div id="notice">Game Over! Your Score was '+this.score+'</div><div id="i2"></div>';

document.getElementById('apple').style.backgroundC olor = '#D7BEBE';
for(i=0;i<this.cleft.length;i++){
document.getElementById('snake'+i).style.backgroun dColor = '#BEBEBE';
}
this.buttons('');
}
}
cbsnake.prototype.happle = function(){
if(this.atop == this.ctop[0] && this.aleft == this.cleft[0]){
//HIT!!!
this.score++;
document.getElementById('cscore').innerHTML = this.score;
this.moveapple();
this.addsnake();
}
}
cbsnake.prototype.addsnake = function(){
var newsnake = document.createElement('div');
var newid = 'snake'+this.cleft.length;
newsnake.setAttribute('id',newid);
//this crap is for IE. I would rather add the class name.
newsnake.style.position = 'absolute';
newsnake.style.top = '-10px';
newsnake.style.left = '-10px';
newsnake.style.display = 'none';
newsnake.style.backgroundColor = 'black';
newsnake.style.height = '7px';
newsnake.style.width = '7px';
newsnake.style.overflow = 'hidden';
document.getElementById('board').appendChild(newsn ake);
this.cleft[this.cleft.length] = -10;
this.ctop[this.ctop.length] = -10;
}
cbsnake.prototype.moveall = function(){
var i = this.ctop.length - 1;
while(i != 0){
document.getElementById('snake'+i).style.top = document.getElementById('snake'+(i-1)).style.top;
document.getElementById('snake'+i).style.left = document.getElementById('snake'+(i-1)).style.left;
document.getElementById('snake'+i).style.display = 'block';
this.ctop[i] = this.ctop[i-1];
this.cleft[i] = this.cleft[i-1];
i = i - 1;
}
}
cbsnake.prototype.numInArray = function(array,array2,value,value2){
var n = 0;
for (var i=0; i < array.length; i++) {
if (array[i] === value && array2[i] === value2) {
n++;
}
}
return n;
}
cbsnake.prototype.hitself = function(){
if(this.numInArray(this.ctop,this.cleft,this.ctop[0],this.cleft[0]) > 1){
this.gover();
}
}
cbsnake.prototype.buttons = function(setto){
document.getElementById('slow').disabled = setto;
document.getElementById('medium').disabled = setto;
document.getElementById('fast').disabled = setto;
}
</script>
  #2 (permalink)  
Antiguo 15/02/2012, 00:12
 
Fecha de Ingreso: febrero-2012
Mensajes: 84
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: juego de la culebrita (snake)

esto es lo que le sigue despues d script por que no calzaba todo el texto:



<style type="text/css">
.board{
width: 399px;
background-color: lightgrey;
border: 1px solid gray;
position: relative;
margin-left: 0;
margin-top: 0;
}
#board{
height: 399px;
border-bottom: 0px;
}
#apple{
position: absolute;
background-color: red;
height: 7px;
width: 7px;
overflow: hidden;
}
.snake{
position: absolute;
top: 200px;
left: 200px;
background-color: black;
height: 7px;
width: 7px;
overflow: hidden;
}
.snake2{
position: absolute;
top: -10px;
left: -10px;
background-color: black;
height: 7px;
width: 7px;
overflow: hidden;
}
#score{
height: 50px;
margin-top: 0px;
}
#cscore{
color: black;
padding-left: 10px;
float: left;
width: 25%;
font-size: xx-large;
}
#buttons{
float: right;
width: 50%;
text-align: right;
padding-top: 10px;
}
#notice{
position: absolute;
top: 1em;
left: 1em;
right: 1em;
text-align: center;
font-size: 150%;
}
#i2{
position: absolute;
bottom: 1em;
left: 1em;
right: 1em;
text-align: center;
font-size: 95%;
}
</style>

</head>

<body>

<p align="left"><strong>Demo:</strong></p>
<p align="left"><!--webbot bot="HTMLMarkup" startspan --><script type="text/javascript">
var snake = new cbsnake();
</script><!--webbot bot="HTMLMarkup" endspan i-checksum="40903" --></p>

</body>

Etiquetas: juego
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:07.