تست استروپ

سلام استادان گرامی
من اکشن اسکریپت را تازه شروع کرده ام.ولی در برنامه نویسی مطالعاتی داشتم.
من میخواهم یک تست ازمون استروپ درست بکنم که در ان تعدادی تکست فیلد بصورت تصادفی در صفحه قرار بگیرد و رنگهای فارسی همانند ابی و قرمز و غیره در انها نوشته شده باشند و رنگ این کلمات نیز بصورت تصادفی بدون تکرار از رنگهای داده شده باشد.
و یک فیلد جداگانه باشد که رنگ کلمات را از ما بخواهد و ما با انتخاب فیلدهای تصادفی رنگ مورد نظر را بگوییم.
چند روز است مدام روی ان کار میکنم. اگر دوستان کمکم کنند تشکر میکنم.
نمیدانم چطور فیلدهای تصادفی فارسی که خاصیت کلیک شدن داشته باشند درست بکنم.
با تشکر
 
منطورتون از فیلد تصادفی چیه؟

طرح پایانی تقریبا مانند این باشد

ابی

سبز قرمز ابی زرد بنفش


که هم فیلدهای پایین و هم تک فیلد بالا بصورت تصادفی (رنگ تصادفی و متن تصادفی) باشد. مثلا دفعه بعد مانند زیر دربیاید.


سبز

زرد ابی قرمز بنفش سبز


و این تکست فیلدها بصورت دکمه باشند. طوری که با زدن این تکستهای پایین اگر رنگ انها با رنگ تک فیلد بالا مطابقت داشته باشد امتیاز بگیریم.در ضمن تکست فیلدها هیچگونه بک گراندی نداشته باشند. یعنی اتو سایز متن باشند.

و سریع دوباره تکسدفیلدها بصورت تصادفی برای مرحله بعد اماده بشوند. یعنی لطف کنید یه کد لودر هم معرفی کنید.
با تشکر
 
آخرین ویرایش:

flash.developer

Active Member
شما می‌توانید کدرنگها و نام رنگ‌ها را بصورت جداگانه در آرایه ذخیره کنید و بوسیله تابع رندوم به انها دسترسی داشته باشید و کد شما باید مکانیزمی داشته باشد که اعدادتصادفی تکراری نداشته باشد.
 

flash.developer

Active Member
از کد زیر می‌تونید برای بدست آوردن اعداد تصادفی در یک بازه خاص استفاده کنید
PHP:
var low:uint = 1;
var high:uint= 10;
var num:uint = Math.floor(Math.random() * (1 + high - low)) + low;
 
سلام
این کد رو تا اینجا رسوندم.
اگه لطف کنید راهنمایی بکنید ممنون میشم.
PHP:
import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;
     import flash.events.Event;

function startcolor()
 {


//////////////ایجاد ارایه تصادفی اعداد


var o:Object={};
var n:Number=4;
var c:Number;
var arr:Array=[];

for(var i:int=0;i<n;i++){
 
c=Math.floor(Math.random()*n);
 while(o[c]!=null){

c=Math.floor(Math.random()*n);
}
o[c]=true;
arr.push(c);
}
trace(arr);
//-----------------------------------------------------
//ایجاد ارایه تصادفی از اسامی رنگها
var arrColorName:Array=["ابی","قرمز","سبز","زرد"];
var arrColorCode:Array=[0xff0000,0x00ff00,0x0000ff,0xffff00];
var arrColorNameRandom:Array=[];
var arrColorCodeRandom:Array=[];


for(var t:Number=0;t<arrColorName.length;t++)
{
    
    arrColorNameRandom.push(arrColorName[arr[t]]);
    arrColorCodeRandom.push(arrColorCode[arr[t]]);
}
trace(arrColorNameRandom);
//-----------------------------
/////اوردن اشیا ارایه در تکست فیلد
var me:Number=0;

for(var h:Number=0;h<arrColorNameRandom.length;h++)
{
      var label:TextField;
     
        var labelText:String =null;
        
        labelText=arrColorNameRandom[h];
        
        function TextFieldExample() {
            configureLabel();
            setLabel(labelText);
        }

         function setLabel(str:String):void {
             
            label.text = str;
        }

        function configureLabel():void {
            label = new TextField();
            label.autoSize = TextFieldAutoSize.LEFT;
            label.selectable=false;
            label.x=50;
            label.y=me;
            

            var format:TextFormat = new TextFormat();
            format.font = "Verdana";
            format.color = arrColorCodeRandom[h];
            format.size = 50;
            format.underline = true;

            label.defaultTextFormat = format;
            addChild(label);
        }
        TextFieldExample();
        me=me+100;
        trace(label.name)
}

 }
//--------------------------
//اجرای کد با زدن دکمه روی صحنه
mgh.addEventListener(MouseEvent.CLICK, checkCards);
 function checkCards(evt:MouseEvent)
 {
    
    startcolor();
    
 }

یه مشکل اینه که لیبلهای قبلی رو نمیدونم چطور حذف بکنم. و با زدن دکمه استارت لیبلهای جدید روی قبلیها میان.میدونم از ریموو باید استفاده بکنم ولی نمیدونم چطوری.
دوم اینکه تکست فیلد رو میخوام دکمه بکنم.
سوم اگه کد بالا مشکلاتی داره و میشه بهتر نوشتش بهم بگین.
با تشکر
 

جدیدترین ارسال ها

بالا