Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Puzzle game in adobe animate

Community Beginner ,
Apr 19, 2024 Apr 19, 2024

Hello! i am making a puzzle game for school that is due today. I need to make a three level puzzle game. Each level has 12 objects, 6 objects being the puzzles themselfs and the other 6 drop zones. The code that is below only works for one level. I changed the item names and put the code into the second frame. The game doesnt let the player click on the puzzles and im not sure where the problem lays.

import flash.events.MouseEvent;
import flash.events.Event;
stop();
var count:Number=0;
stage.addEventListener (Event.ENTER_FRAME,PuzzleLoop);
function PuzzleLoop(e:Event):void
{

if (count >=6)
{
stage.removeEventListener(Event.ENTER_FRAME, PuzzleLoop);
item1_mc.visible= false;
item2_mc.visible= false;
item3_mc.visible= false;
item4_mc.visible= false;
item5_mc.visible= false;
item5_mc.visible= false;
gotoAndStop(2);
}

}
var orig1X:Number=item1_mc.x;
var orig1Y:Number=item1_mc.y;
var orig2X:Number=item2_mc.x;
var orig2Y:Number=item2_mc.y;
var orig3X:Number=item3_mc.x;
var orig3Y:Number=item3_mc.y;
var orig4X:Number=item4_mc.x;
var orig4Y:Number=item4_mc.y;
var orig5X:Number=item5_mc.x;
var orig5Y:Number=item5_mc.y;
var orig6X:Number=item6_mc.x;
var orig6Y:Number=item6_mc.y;
item1_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
item1_mc.addEventListener(MouseEvent.MOUSE_UP, item1Release);
item2_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
item2_mc.addEventListener(MouseEvent.MOUSE_UP, item2Release);
item3_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
item3_mc.addEventListener(MouseEvent.MOUSE_UP, item3Release);
item4_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
item4_mc.addEventListener(MouseEvent.MOUSE_UP, item4Release);
item5_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
item5_mc.addEventListener(MouseEvent.MOUSE_UP, item5Release);
item6_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
item6_mc.addEventListener(MouseEvent.MOUSE_UP, item6Release);
item1_mc.buttonMode=true;
item2_mc.buttonMode=true;
item3_mc.buttonMode=true;
item4_mc.buttonMode=true;
item5_mc.buttonMode=true;
item6_mc.buttonMode=true;
function dragTheObject(event:MouseEvent):void {
var item:MovieClip=MovieClip(event.target);
item.startDrag();
var topPos:uint=this.numChildren-1;
this.setChildIndex(item, topPos);
}

function item1Release(event:MouseEvent):void {
var item:MovieClip=MovieClip(event.target);
item.stopDrag();
if (dropZone1_mc.hitTestPoint(item.x,item.y)) {
item.x=dropZone1_mc.x;
item.y=dropZone1_mc.y;
item1_mc.buttonMode=false;
item1_mc.removeEventListener( MouseEvent.MOUSE_DOWN, dragTheObject );

count++;
}
else {
item.x=orig1X;
item.y=orig1Y;
}}

function item2Release(event:MouseEvent):void {
var item:MovieClip=MovieClip(event.target);
item.stopDrag();
if (dropZone2_mc.hitTestPoint(item.x,item.y)) {
item.x=dropZone2_mc.x;
item.y=dropZone2_mc.y;
item2_mc.buttonMode=false;
item2_mc.removeEventListener( MouseEvent.MOUSE_DOWN, dragTheObject );
count++;
}
else {
item.x=orig2X;
item.y=orig2Y;
}}

function item3Release(event:MouseEvent):void {
var item:MovieClip=MovieClip(event.target);
item.stopDrag();
if (dropZone3_mc.hitTestPoint(item.x,item.y)) {
item.x=dropZone3_mc.x;
item.y=dropZone3_mc.y;
item3_mc.buttonMode=false;
item3_mc.removeEventListener( MouseEvent.MOUSE_DOWN, dragTheObject );
count++;
} else {
item.x=orig3X;
item.y=orig3Y;
}}

function item4Release(event:MouseEvent):void {
var item:MovieClip=MovieClip(event.target);
item.stopDrag();
if (dropZone4_mc.hitTestPoint(item.x,item.y)) {
item.x=dropZone4_mc.x;
item.y=dropZone4_mc.y;
item4_mc.buttonMode=false;
item4_mc.removeEventListener( MouseEvent.MOUSE_DOWN, dragTheObject );
count++;
}
else {
item.x=orig4X;
item.y=orig4Y;
}}

function item5Release(event:MouseEvent):void {
var item:MovieClip=MovieClip(event.target);
item.stopDrag();
if (dropZone5_mc.hitTestPoint(item.x,item.y)) {
item.x=dropZone5_mc.x;
item.y=dropZone5_mc.y;
item5_mc.buttonMode=false;
item5_mc.removeEventListener( MouseEvent.MOUSE_DOWN, dragTheObject );
count++;
} else {
item.x=orig5X;
item.y=orig5Y;
}}

function item6Release(event:MouseEvent):void {
var item:MovieClip=MovieClip(event.target);
item.stopDrag();
if (dropZone6_mc.hitTestPoint(item.x,item.y)) {
item.x=dropZone6_mc.x;
item.y=dropZone6_mc.y;
item6_mc.buttonMode=false;
item6_mc.removeEventListener( MouseEvent.MOUSE_DOWN, dragTheObject );
count++;
}
else {
item.x=orig6X;
item.y=orig6Y;
}}

function checkAnswers(event:MouseEvent):void {
if (dropZone1_mc.hitTestPoint(item1_mc.x,item1_mc.y) &&
dropZone2_mc.hitTestPoint(item2_mc.x,item2_mc.y) &&
dropZone3_mc.hitTestPoint(item3_mc.x,item3_mc.y) &&
dropZone4_mc.hitTestPoint(item4_mc.x,item4_mc.y) &&
dropZone5_mc.hitTestPoint(item5_mc.x,item5_mc.y) &&
dropZone6_mc.hitTestPoint(item6_mc.x,item6_mc.y)) {

if (count >=3)
{
gotoAndStop(2);
}
} else {

}}


function itemRelease(event:MouseEvent):void {
var thisItem:MovieClip = MovieClip(event.target);
thisItem.stopDrag();
if (dropZone1_mc.hitTestPoint(thisItem.x,thisItem.y)) {
thisItem.x = dropZone1_mc.x;
thisItem.y = dropZone1_mc.y;
}
else if (dropZone2_mc.hitTestPoint(thisItem.x,thisItem.y)) {
thisItem.x = dropZone2_mc.x;
thisItem.y = dropZone2_mc.y;
}
else if (dropZone3_mc.hitTestPoint(thisItem.x,thisItem.y)) {
thisItem.x = dropZone3_mc.x;
thisItem.y = dropZone3_mc.y;
}
else if (dropZone4_mc.hitTestPoint(thisItem.x,thisItem.y)) {
thisItem.x = dropZone4_mc.x;
thisItem.y = dropZone4_mc.y;
}
else if (dropZone5_mc.hitTestPoint(thisItem.x,thisItem.y)) {
thisItem.x = dropZone5_mc.x;
thisItem.y = dropZone5_mc.y;
}
else if (dropZone6_mc.hitTestPoint(thisItem.x,thisItem.y)) {
thisItem.x = dropZone6_mc.x;
thisItem.y = dropZone6_mc.y;
}
else if (thisItem==item1_mc) {
event.target.x = orig1X;
event.target.y = orig1Y;
}
else if (thisItem==item2_mc) {
event.target.x = orig2X;
event.target.y = orig2Y;
}
else if (thisItem==item3_mc) {
event.target.x = orig3X;
event.target.y = orig3Y;
}
else if (thisItem==item4_mc) {
event.target.x = orig4X;
event.target.y = orig4Y;
}
else if (thisItem==item5_mc) {
event.target.x = orig5X;
event.target.y = orig5Y;
}
else {
event.target.x = orig6X;
event.target.y = orig6Y;
}}

TOPICS
ActionScript , Code , Error
1.1K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Apr 19, 2024 Apr 19, 2024

Hi.

 

I think some encapsulation and other object oriented programming approaches may help a little bit. For example, using containers in different frames and also custom properties on the items instead of variables.

 

Here is a suggestion in which I tried to make your code more dynamic and less DRY but not too much complex.

 

AS3 code:
[Frame 1]

import flash.display.MovieClip;
import flash.events.Event;

var matches:uint;
var totalMatches:uint;

function game1():void
{
	matches = 0;
	totalMatche
...
Translate
Community Expert ,
Apr 19, 2024 Apr 19, 2024

Hi.

 

I think some encapsulation and other object oriented programming approaches may help a little bit. For example, using containers in different frames and also custom properties on the items instead of variables.

 

Here is a suggestion in which I tried to make your code more dynamic and less DRY but not too much complex.

 

AS3 code:
[Frame 1]

import flash.display.MovieClip;
import flash.events.Event;

var matches:uint;
var totalMatches:uint;

function game1():void
{
	matches = 0;
	totalMatches = 0;
	
	setPiece(board1.item1_mc, board1.dropZone1_mc);
	setPiece(board1.item2_mc, board1.dropZone2_mc);
	setPiece(board1.item3_mc, board1.dropZone3_mc);
	setPiece(board1.item4_mc, board1.dropZone4_mc);
	setPiece(board1.item5_mc, board1.dropZone5_mc);
	setPiece(board1.item6_mc, board1.dropZone6_mc);
	
	stop();
}

function setPiece(target:MovieClip, dropZone:MovieClip):void
{
	target.addEventListener(MouseEvent.MOUSE_DOWN, dragHandler);
	target.addEventListener(MouseEvent.MOUSE_UP, releaseHandler);
	target.buttonMode = true;
	target.dropZone = dropZone;
	target.originX = target.x;
	target.originY = target.y;
	totalMatches++;
}

function dragHandler(event:MouseEvent):void
{
	var item:MovieClip = MovieClip(event.target);
	
	item.startDrag();
	item.parent.addChild(item);
}

function releaseHandler(event:MouseEvent):void
{
	var item:MovieClip = MovieClip(event.target);
	
	item.stopDrag();
	
	if (item.hitTestPoint(item.dropZone.x, item.dropZone.y))
	{
		item.x = item.dropZone.x;
		item.y = item.dropZone.y;
		item.buttonMode = false;
		item.removeEventListener(MouseEvent.MOUSE_DOWN, dragHandler);
		item.removeEventListener(MouseEvent.MOUSE_UP, releaseHandler);
		matches++;
		
		if (currentFrame < totalFrames && matches == totalMatches)
			nextFrame();
	}
	else
	{
		item.x = item.originX;
		item.y = item.originY;
	}
}

game1();


[Frame 2]

function game2():void
{
	matches = 0;
	totalMatches = 0;
	
	setPiece(board2.item1_mc, board2.dropZone1_mc);
	setPiece(board2.item2_mc, board2.dropZone2_mc);
	setPiece(board2.item3_mc, board2.dropZone3_mc);
	setPiece(board2.item4_mc, board2.dropZone4_mc);
	setPiece(board2.item5_mc, board2.dropZone5_mc);
	setPiece(board2.item6_mc, board2.dropZone6_mc);	
}

game2();


[Frame 3]

function game3():void
{
	matches = 0;
	totalMatches = 0;
	
	setPiece(board3.item1_mc, board3.dropZone1_mc);
	setPiece(board3.item2_mc, board3.dropZone2_mc);
	setPiece(board3.item3_mc, board3.dropZone3_mc);
	setPiece(board3.item4_mc, board3.dropZone4_mc);
	setPiece(board3.item5_mc, board3.dropZone5_mc);
	setPiece(board3.item6_mc, board3.dropZone6_mc);
}

game3();


Download / FLA / source:
https://bit.ly/4d6EZ0a

I hope this helps.

 

Regards,

JC

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Apr 19, 2024 Apr 19, 2024

Thank you for the reply but the code still doesnt work. I attached the error message.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 19, 2024 Apr 19, 2024

Have you downloaded the FLA?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Apr 19, 2024 Apr 19, 2024

I have now, sorry Im new to adobe animate and didnt realize. Everything works, Thank you so much for the help, Have a good day.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 19, 2024 Apr 19, 2024

You're welcome!

 

Please let us know if you need further assistance.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Apr 19, 2024 Apr 19, 2024

Ive encountered a problem while working with the FLA file. Following the example game provided, I have selected all the elements and created a symbol  "Board" and named it as "board1," (i did the same for the other two levels)

However, I'm facing a challenge where the puzzle pieces dont want to remain in the designated dropzone once I attempt to place them there.Also ,Given that the code specifically references only "item1_mc" through "item6_mc," I'm curious if it's necessary to add the other items in the code for each level. (Each level features  geometric shapes labeled from "item1_mc" to "item36_mc," mirroring the arrangement of dropzones.). I am very sorry to be bothering you once more.

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 19, 2024 Apr 19, 2024

Do you have a FLA for us to look into?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Apr 20, 2024 Apr 20, 2024
LATEST

I sent you the link to the fla file on messages. 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines