Un juego de rompecabezas de formas escrito en java, con funciones perfectas y descarga de código completo para ejecutar

   Hace algún tiempo, la empresa estaba demasiado ocupada y el blog de CSDN dejó de actualizarse durante casi dos meses. Hoy, compartiré con ustedes un juego de rompecabezas en forma de Java, que también se llama juego Huarongdao. El sistema consta de una imagen grande, dividida en N*N imágenes pequeñas, que pueden ser 3*3, 4*4, 5*5, etc. Cada vez que se juega, las imágenes se codifican aleatoriamente y solo hay una posición en blanco. La imagen se mueve presionando las teclas arriba, abajo, izquierda y derecha. Toda la interfaz del sistema es hermosa, con el código fuente completo, espero que les guste. Ayuda, dale me gusta y sigue. Programar juntos y progresar juntos.

Antecedentes del proyecto

   Los rompecabezas se convirtieron rápidamente en un producto de entretenimiento bien establecido con un gran mercado y los consumidores podían comprar rompecabezas en cualquier lugar. En este momento, los rompecabezas se usaban no solo para educación y entretenimiento, sino también para comerciales y propaganda política. La Primera Guerra Mundial (1914-1918) es un buen ejemplo. Los rompecabezas baratos que representan a valientes guerreros que luchan por el rey y el país sin riesgo fueron populares en ambos lados y se vendieron bien. Los puzzles se han convertido en una forma de acercarnos al mundo interior de las personas, entrar en la familia y difundir el mensaje. Al rompecabezas se sumaron los periódicos, la radio y, pronto, la primera generación de la televisión como forma sencilla y directa de comunicación de masas. ¿Se debe animar a la gente a viajar en tren? Aquí aparecen muchos rompecabezas que muestran trenes majestuosos y turistas felices. Cada nuevo invento y tendencia —el barco de vapor, el avión, el automóvil y el último y más audaz traje de baño para mujer— estuvo una vez en el rompecabezas.

entorno de desarrollo

   El lenguaje de desarrollo es Java y el entorno de desarrollo es Eclipse o IDEA. Base de datos utilizada: MySQL. Ejecute el programa principal o ejecute y abra el archivo JAR para ejecutar el programa.

marco del sistema

  Desarrollado utilizando el marco SWING que viene con el JDK, no es necesario instalar paquetes JAR de terceros. Base de datos MySQL, modo de forma pura, simplemente ejecute el archivo principal directamente. El método de ejecución puede ejecutarse directamente como aplicación o JAR --.jar

función del programa

   Como se Juega

1 Configure su propio apodo de juego, que se mostrará en la esquina superior derecha del juego

2 Muestre el ranking actual del juego TOP10, los usuarios pueden ver fácilmente a los jugadores con los mejores registros en este juego

3 Use las teclas del teclado hacia arriba, abajo, izquierda y derecha para mover la imagen hacia arriba, abajo, izquierda y derecha. Cuando se presiona izquierda: la imagen del espacio se intercambia con la imagen de la izquierda, y la operación es similar a la de la derecha y arriba y abajo

4 Al mover la imagen pequeña, hay un sonido de teclado correspondiente

5 Cuando se completa el juego, se completa el juego rápido

    habilidades de juego

  Para los jugadores que son nuevos en los rompecabezas, los llamados rompecabezas de nivel de entrada dependen principalmente de algunas características del patrón. Esos patrones con contenido rico, es decir, hay subimágenes con contenido relativamente completo en cada esquina de la imagen completa, y el contraste entre el color y el contorno es relativamente grande. Tales rompecabezas son relativamente fáciles de jugar. Porque en la parte del montaje, si se quiere encontrar una pieza adecuada, las piezas opcionales siempre se pueden limitar a un rango relativamente pequeño.

resultado de ejecución

1 Interfaz inicial

2 Interfaz de ejecución

 clave

public void onInit() {
		setShowFPS(false);
		setSize(1100, 850);
		//setLocation(100, 100);
		setLoseFocusChangeColor(false);
		setTitle("拼图游戏");
		x = y = 3;
		matrix = new ImageObject[][]{
				{
						new ImageObject(new FileImageResource("./res/img/1.jpg"), 0, 0),
						new ImageObject(new FileImageResource("./res/img/2.jpg"), 200, 0),
						new ImageObject(new FileImageResource("./res/img/3.jpg"), 400, 0),
						new ImageObject(new FileImageResource("./res/img/4.jpg"), 600, 0)},
				{
						new ImageObject(new FileImageResource("./res/img/5.jpg"), 0, 200),
						new ImageObject(new FileImageResource("./res/img/6.jpg"), 200, 200),
						new ImageObject(new FileImageResource("./res/img/7.jpg"), 400, 200),
						new ImageObject(new FileImageResource("./res/img/8.jpg"), 600, 200)},
				{
						new ImageObject(new FileImageResource("./res/img/9.jpg"), 0, 400),
						new ImageObject(new FileImageResource("./res/img/10.jpg"), 200, 400),
						new ImageObject(new FileImageResource("./res/img/11.jpg"), 400, 400),
						new ImageObject(new FileImageResource("./res/img/12.jpg"), 600, 400)},
				{
						new ImageObject(new FileImageResource("./res/img/13.jpg"), 0, 600),
						new ImageObject(new FileImageResource("./res/img/14.jpg"), 200, 600),
						new ImageObject(new FileImageResource("./res/img/15.jpg"), 400, 600),
						new ImageObject(new FileImageResource("./res/img/0.jpg"), 600, 600)}
		};
		text = new SimpleText("step: " + step, 850, 100);
		addObject(text);
		figure = new int[][]{
   
   {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
		for (int i = 0; i < 1000; i++) {
			int a = (int) (Math.random() * 4);
			switch (a) {
				case 0:
					upMove(false);
					break;
				case 1:
					downMove(false);
					break;
				case 2:
					rightMove(false);
					break;
				case 3:
					leftMove(false);
					break;
			}
		}
		add();
		ArrayList<String> list = Rank.topTen();
		for (int i = 0; i < list.size(); i++) {
			addObject(new SimpleText(list.get(i), 825, 200 + i * 50));
		}
		addObject(new SimpleText("top10:", 825, 150));
		userName = dialogInput("输入你的姓名:", "测试用户");
		addKeyListener(null, keyEvent ->
		{
			switch (keyEvent.getKeyCode()) {
				case KeyEvent.VK_DOWN:
					downMove(true);
					break;
				case KeyEvent.VK_UP:
					upMove(true);
					break;
				case KeyEvent.VK_LEFT:
					leftMove(true);
					break;
				case KeyEvent.VK_RIGHT:
					rightMove(true);
					break;
			}
		}, keyEvent ->
		{
		});
	}

resumen del proyecto

(1) Antes de escribir el código, el pensamiento debe ser claro en el cerebro, no vago, debe dibujar el diagrama de funciones y el diagrama de flujo, y luego implementar cada bloque de funciones de acuerdo con él, analizar más y cultivar una buena capacidad de pensamiento lógico.

(2) En el proceso de escritura del código, se debe adoptar el principio de proximidad. Generalmente, la misma función o la configuración para el mismo componente deben escribirse juntas, de modo que el programa escrito de esta manera sea más claro, menos propenso a errores y más fácil de encontrar.

(3) Para desarrollar buenos hábitos de comentarios, primero, es beneficioso para otros leer su programa, y ​​también es beneficioso para usted leerlo más tarde, para que pueda comprender rápidamente el programa y mejorar la eficiencia.

(4) modularizar la función, es decir, encapsular el segmento de código que implementa la misma función en una clase o método, y llamarlo cuando se implemente, lo que puede mejorar la legibilidad del código

(5) Crear paquetes para almacenar clases con diferentes funciones para que la estructura del sistema sea más modular y estandarizada.

(6) Al escribir código, debe depurar mientras escribe, establecer puntos de interrupción de manera oportuna o enviar el valor de algunas variables a la consola, y observar y analizar el valor de las variables para facilitar el juicio del problema.

Supongo que te gusta

Origin blog.csdn.net/bangxiecode/article/details/131610017
Recomendado
Clasificación