python

۱۳۸۸ آذر ۱۹, پنجشنبه

1- آخرین مهلت تحویل پروژه ی میان ترم ساعت 4 صبح روز 1 شنبه است. بعد از این ساعت به هیچ وجه هیچ پروژه ای
 تحویل گرفته نمیشود.
2- تمام کدهایی که به عنوان تمرین و یا پروژه فرستاده میشوند توسط یک برنامه به صورت خودکار چک میشوند. اگر مشابهت بیش از حدی بین دو کد ارسالی شما پیدا شده، یا کد مشابهی در اینترنت موجود باشد طبق جدولی که در جلسه ی سوم
گفته شد از نمره ی نهایی کم میشود.
3- حل 100 سوال نمره ی 20 را در پی خواهد داشت. کسانی که به این روش اقتدا میکنند توجه داشته باشند که در نهایت از آنان خواسته خواهد شد که تعدادی از سوالاتی که حل کرده اند را در حضور یکی از تی ای ها دوباره بنویسند تا این اطمینان حاصل شود که همه ی سوالها را خود حل کرده اند.
4- به هر حال حل کردن سوالهای اضافی بر تمرینهای اجباری نمره ی شما را افزایش خواهد داد.
5- اصولا راه حلهایی که برای سوالهای پروژه ی اویلر ارایه میدهید باید حد اکثر در 1 دقیقه جواب بدهند.اگر بیش از این طول میکشد به این معنی است که باید به دنبال راه حل سریعتری برای حل آن سوال باشید.
6- از الان یاد بگیرید که جواب سوالهایتان را در اینترنت پیدا کنید. سوالهای درباره ی پایتون، یا موارد ریاضی و الگوریتمی که با آن مواجه میشوید. این کار به اندازه ی خود برنامه نویسی برای یک دانشجو مهم است و اصولا هرچقدر آدمها حرفه ای تر میشوند بیشتر از اینترنت برای حل مشکلاتشان استفاده میکنند.
از کدهای کمکی زیر که تعدادی از دوستانتون نوشتند برای نوشتن پروژه ی فوتبال دستی میتوانید استفاده کنید. به import بالای فایل توجه کنید.

#-> Importing Requirements :D :

from math import *

#-> Defining Some Utilities :D :

################################# -> Returns The Direct Distance of Agent From Ball
def directDistBall(model,control,agent):
    
    return sqrt((( model.ball_pos[model.x]-agent[model.x] )**2) + (( model.ball_pos[model.y]-agent[model.y] )**2))
################################# -> Returns The Player Which The Ball is Kickable For ( Which is Ball Keeper )
def ballKeeper(model,control):
    th=0
    R=60
    if directDistBall(model,control,model.my_goalie[0]) Returns The Rod Which Agent is On
def player2rod(model,control,agent):
    if agent==model.my_goalie[0]:
        return model.my_goalie_rod
    if agent==model.my_offense_players[1] or agent==model.my_offense_players[0]:
        return model.my_offense_rod
    if agent==model.my_defense_players[2] or agent==model.my_defense_players[1] or agent==model.my_defense_players[0]:
        return model.my_defense_rod
################################# -> Return The Rod Next To The Rod Which The Agent is On 
def player2rodNext(model,control,agent):
    if agent==model.my_goalie[0]:
        return model.their_offense_rod
    else:
        return model.their_defense_rod
################################# -> Returns The ' Y ' Attribute of The Agent Who is Closest To yPos
def nearestAgentOnRodY(model,control,rod,yPos):
    sg=model.my_goalie_rod
    sd=model.my_defense_rod
    so=model.my_offense_rod

    og=model.their_goalie_rod
    od=model.their_defense_rod
    oo=model.their_offense_rod

    if rod==sg:
        return model.my_goalie[0][model.y]
    if rod==sd:
        if abs(yPos-model.my_defense_players[1][model.y]) <= abs(yPos-model.my_defense_players[0][model.y]):
            if abs(yPos-model.my_defense_players[1][model.y]) <= abs(yPos-model.my_defense_players[2][model.y]):
                return model.my_defense_players[1][model.y]
            else:
                return model.my_defense_players[2][model.y]
        else:
            if abs(yPos-model.my_defense_players[0][model.y]) <= abs(yPos-model.my_defense_players[2][model.y]):
                return model.my_defense_players[0][model.y]
            else:
                return model.my_defense_players[2][model.y]
    if rod==so:
        if abs(yPos-model.my_offense_players[1][model.y]) <= abs(yPos-model.my_offense_players[0][model.y]):
            return model.my_offense_players[1][model.y]
        else:
            model.my_offense_players[0][model.y]
    if rod==og:
        return model.their_goalie[0][model.y]
    if rod==od:
        if abs(yPos-model.their_defense_players[1][model.y]) <= abs(yPos-model.their_defense_players[0][model.y]):
            if abs(yPos-model.their_defense_players[1][model.y]) <= abs(yPos-model.their_defense_players[2][model.y]):
                return model.their_defense_players[1][model.y]
            else:
                return model.their_defense_players[2][model.y]
        else:
            if abs(yPos-model.their_defense_players[0][model.y]) <= abs(yPos-model.their_defense_players[2][model.y]):
                return model.their_defense_players[0][model.y]
            else:
                return model.their_defense_players[2][model.y]
    if rod==oo:
        if abs(yPos-model.their_offense_players[1][model.y]) <= abs(yPos-model.their_offense_players[0][model.y]):
            return model.their_offense_players[1][model.y]
        else:
            return model.their_offense_players[0][model.y]
################################# -> Returns The Relative Angle From An Start(mb) To An End(mg)
def getRelAngle(model,control,mb,mg):
    tana=(mg[model.y]-mb[model.y])/(mg[model.x]-mb[model.x])
    return degrees(atan(tana))
################################# -> Returns a Suitable Moving Command Which Is Related To Moving Direction Of Next Rod
def move(model,control,rod,yPos):
    if nearestAgentOnRodY(model,control,rod,yPos)-yPos>0 :
        if rod==model.my_goalie_rod :
            control.goalie_rod_up()
        if rod==model.my_defense_rod :
            control.defense_rod_up()
        if rod==model.my_offense_rod :
            control.offense_rod_up()
    if nearestAgentOnRodY(model,control,rod,yPos)-yPos<0 :
        if rod==model.my_goalie_rod :
            control.goalie_rod_down()
        if rod==model.my_defense_rod :
            control.defense_rod_down()
        if rod==model.my_offense_rod :
            control.offense_rod_down()
################################# -> Returns The Ball Direction
def getBallDirection(model,control):
    return degrees(atan(model.ball_vel[model.y]/model.ball_vel[model.x])) #-> Make Sure That The Returned Angle Must Be Compatible With System
################################# -> Predicts The Interception Position of Ball Whith Walls
def predictNewBallPos(model,control,currentPos,angle):
    newPos = (0,0)
    if angle > 180 :
        newPos[model.y]=0
        newPos[model.x]=((newPos[model.y]-currentPos[model.y])/tan(angle))+currentPos[model.x]
    else :
        newPos[model.y]=580
        newPos[model.x]=((newPos[model.y]-currentPos[model.y])/tan(angle))+currentPos[model.x]
    return newPos
################################# -> Predicts The ' Y ' Attribute of Interception Position of Ball With Given Rod
def predictInterceptY(model,control,rod,angle,ballPos):
    yPos=(tan(angle)*(rod[model.x]-model.ball_pos[model.x]))+model.ball_pos[model.y]
    if yPos > 0 and yPos < 580 :
        return yPos
    else :
        ballPos=predictNewBallPos(model,control,ballPos,angle)
        angle = 180 - angle
        return predictInterceptY(model,control,rod,angle,ballPos)    
################################# -> Predicts The Time Which Takes Long Till The Ball Reach The Given Point Directly
def predictTimeTillDirectIntercept(model,control,iPoint):
    return sqrt(((model.ball_pos[model.x]-iPoint[model.x])**2)  +  ((model.ball_pos[model.y]-iPoint[model.y])**2))/ sqrt( ((model.ball_vel[model.x])**2)  +  ((model.ball_vel[model.y])**2) )
################################# -> Determines That Can The Ball Be Intercepted By a Specific Rod Or Not
def isInterceptPossibleFor(model,control,rod):
    iPoint = predictInterceptY(model,control,rod,getBallDirection(model,control),(model.ball_pos[model.x],model.ball_pos[model.y]))
    if abs(nearestAgentOnRodY(model,control,rod,yPos)[model.y]-iPoint)/20 < predictTimeTillDirectIntercept(model,control,iPoint):
        return True
    else:
        return False
#################################


8 نظر:

در ۲۰ آذر ۱۳۸۸ ساعت ۲:۱۷, Anonymous ناشناس گفت...

سلام استاد ، می خواستم از شما خواهش کنم زمان پروژه را تمدید بفرمایید . باور کنید من نمی رسم بنویسم چون دستم خیلی کنده برادرم هم داره کمکم میکنه ولی خیلی دارم تلاش میکنم اگه میشه زمان رو تا آخر هفته بذارید از شما خیلی ممنون می شم . نمی دونید چه کمک بزرگی به من و بقیه کردید . باور کنید از استرس دارم می ترکم. از شما چیزی کم نمیشه .

 
در ۲۱ آذر ۱۳۸۸ ساعت ۰:۱۶, Anonymous ناشناس گفت...

استاد شما رو به مقدساتتون به ما رحم كنيد
بابا مگه نمي گيد نمي خواهيد ما رو اذيت كنيد
پس الان دقيقا داريد چي كار مي كنيد ؟؟؟
استاد زمان پروژه رو تمديد كنيد
خواهش ميكنم!!!

 
در ۲۱ آذر ۱۳۸۸ ساعت ۱۶:۰۱, Anonymous ناشناس گفت...

راستش من نمی دانم چرا شما با وجود تقاضای فراوان بچه ها به بچه ها کمک نمی کنید وزمان تحویل پروژه
تمدید نمی نمایید.در حالی که شما می فرمایید:نمی خواهم شما را اذیت کنم.

 
در ۲۱ آذر ۱۳۸۸ ساعت ۱۶:۰۳, Anonymous ناشناس گفت...

agha to ro khodaaaaaaaaaaaaaaaa tamdid koooooooooooooooooon !!!!!!!!!!!!!!!

 
در ۲۱ آذر ۱۳۸۸ ساعت ۱۶:۰۴, Anonymous ناشناس گفت...

پروژه را تمدید کن

 
در ۲۱ آذر ۱۳۸۸ ساعت ۱۶:۰۸, Anonymous ناشناس گفت...

AGA NMIDONID SAIT CHEKHABARE HAME PROJASHON NIME KARE MOONDE.

 
در ۲۱ آذر ۱۳۸۸ ساعت ۱۶:۴۱, Anonymous ناشناس گفت...

استاد تو رو به خدا زود تر بگید پروژه های میان ترم رو به کدوم ایمیلتون بفرستیم.

 
در ۲۱ آذر ۱۳۸۸ ساعت ۱۷:۲۶, Anonymous ناشناس گفت...

خیلی بی رحمیییییییییییییییییی

 

ارسال یک نظر

اشتراک در نظرات پیام [Atom]

<< صفحهٔ اصلی