音ゲー、fps、DTM、プログラミング雑記置き場

ブログタイトル通りに雑記を垂れ流す。

【DDR】ノンバーSPプレイヤーによる足15の個人的主観による非公式クリア難易度表

  • 随時更新予定
  • ちゃんとプレイしたうえでの個人的主観ですが、あくまで「個人的主観」なので
    一意見としてみる感じでお願いします。
  • 観点はスコアでなくクリア目線
  • 数値も完全に主観によるため、一個人の考え方として受けとって頂けると幸いです。(jubeatとかGITADORAみたいに少数表示にしたかっただけ)

  • 足14版はコッチ↓

ha2war.hatenablog.com

  • 足16版は適正でないので記事未作成

15詐称(16↑)

15強(15.7 ~ 15.9)

15適正 (15.4 ~ 15.6)

  • 15.5: 一途(激)
    • 同時期に配信されたミックスナッツ(ESP15)の高密度地帯を全体に散りばめた譜面
    • 常に5連前後の16分地団駄もしくは乱打を踏ませてくる為地力が一定のラインを超えていないとじりじりゲージを持っていかれる
      • 全体難なのでどこまで耐えきれるかで足15適性チェッカーとしても機能する(完走で足15適正クラス)
    • 16分に足が追いつくかがそのままクリアに直結するため、足14、15弱の地団駄・乱打譜面(FIRE FIRE,CyberConnect等)をしっかり触っていくこと
  • 15.5: Re:GENERATION(激)
  • 15.4: ヤサイマシ☆ニンニクアブラオオメ(激)
    • Horatio激を彷彿させるサビの長い地団駄が特徴
      • BPM180で高速かつ踏みかえがあり苦手意識があるとここで落ちる可能性もあり
      • 踏みかえは誘導に沿って交互にとれるため、ハイスピを下げて認識重視にするのもあり
      • おそらくこの地団駄は裏のシンセのアルペジオに合わせている?(ボーカル曲だから地団駄の唐突感がすごい)
    • 捻り、同時もそこそこあり上記の地団駄、高BPMを加味すると15下位からはワンランク上に感じた
  • 15.4: IN BETWEEN(激)
    • L.E.D-G名義のHARDSTYLE(RISING FIRE HAWK等)と同傾向の譜面
      • 地団駄+同時、局所的な16分滝の構成
    • 瞬間密度は濃いめだが、譜面認識力があれば中速の為取り切れるパターンもあり15下位に感じるかも
  • 15.4: Squeeze(激)
    • ラストのドロップの8小節目から勝負(309ノーツ目~)。ここから密度が最も濃くなる
      • スキップや3連地団駄の踏みかえパターンなどがすべてつながって16分乱打っぽく降ってくる認識難+リズム難
      • 上記が見切れないと、足運びが失敗してもそもそも始点が見極められず立て直しができず、なし崩し的にゲージを持ってかれてしまう

15弱(15.0 ~ 15.3)

  • 15.3: ずっとみつめていて (Ryu☆Remix)(鬼)
    • 足14によくある3連16分に若干尾ひれをつけて4連地団駄とかにしました、なので足15みたいな感じ
    • ということは足15で最頻するパターンを練習できるということでもあるので、足15へのステップアップとして
  • 15.3: C-C-C-N-N-N(激)
    • 後半の加速から勝負と思いきや前半のラップ地帯も地団駄、アフロが散見され体力配分が難しい
    • 全体を通して同時が多いので、ガッツリ踏み切るとバテるので注意
    • 2回に分けて最高速にソフランするのが特徴
  • 15.3: Deep tenDon Reflex(激)
    • 捻り以外の要素を満遍なく散りばめた総合譜面の配置で素直だが、BPM180で難易度が底上げされている
    • 特に地団駄が追いつきにくく苦手意識があると15中堅レベルに感じる
  • 15.3: HARD BRAIN(激)
    • 移植元のIIDX同様、ラストに向けて密度が上がる譜面
    • 同時が入る8分滝に密度が少ないブレイクを挟んでの635ノーツとかなりの体力譜面
    • 捻り等は求められず、ラストの16分滝までにどれだけ体力を残せるかがクリアに大きく関わる
  • 15.3: Hyper Twist(激)
    • 曲名通り捻り特化。捻り体勢でとる交互踏みやビジステ左右切り返しから始まり後半はアフロが加わる
    • 終盤は3連地団駄の弱めの正面フィジカル譜面になる+捻り特化の前半は8分滝で構成されており密度が薄めといことがありクリア難易度自体は15下位に落ちていている
  • 15.3: Take A Step Forward(鬼)
    • 激譜面の交互難要素はなくなり、メインメロディ合わせで物量が増されノリながら踏める楽しい譜面
    • 中盤のブレイク~サビにかけてスキップ配置が難解になり、捻りで踏まないと両足踏みかえとなってしまう
  • 15.3: Xepher(鬼)
    • ESP13の若干踏みづらい滝は健在。イントロアウトロ・間奏の16分配置で強化されている
    • 8分滝に関しては前半はESP13と同じ、「殺人餃子」地帯後のチャーチオルガンのアルペジオから滝が捻りや16分で強化されている
    • 対策もESP同様滝の途中で足運びに失敗したら、一度足を止めて拾い直す方針
  • 15.2: ALGORITHM(鬼)
    • 中速での捻りの練習にちょうどよい
      • 捻りができないと体感難度は一気に跳ね上がる(15中堅くらい?)
    • サビからは逆足入りもあるので初見はハイスピを上げすぎず、譜面を見切りながら踏みたい
    • 終盤の16分ビジステ切り返し地帯が難所だが、BPM130で低速よりのBPMのため誤魔化しもきく
  • 15.2: BLACK JACKAL(激)
    • 3連地団駄が全体で構成されている
    • 中速で降ってくるので、地団駄の処理の練習に。
    • 足14でも練習できるが密度(回数)が多く地力があれば積極的に選曲したい
  • 15.2: CyberConnect(激)
    • 足15の要素・密度を中速で踏ませてくれる15基礎固め譜面
    • ほとんど誘導で交互踏みできる構成の為、譜面が見切れる+体力があるなら15でも早い段階で埋まるかも
    • 足15からは4連以上の16分配置が主となっていくのでこの譜面で慣れておきたい
  • 15.2: Magnetic(激)
    • Sota曲特有のリズム難。特にブレイク前までは同氏のGLITTERのような符点やシンコペーションを多用した非4つ打ちのリズムで初見は対応しづらい
    • そこにさらにソフランによる認識難もあるが難所はそこまでで密度や捻り、さらには体力も求められず普段から低速プレイしていて譜面の認識力が高いプレイヤーなら逆詐称となる
    • 認識力がなくても、逆に体力によるゴリ押しでもクリアが可能なため、総じて15下位
  • 15.2: Our Soul(鬼)
    • BPM150の王道HARDSTYLEを踏ませてくれる。こういうのもっとちょうだい。
    • 捻り体勢でとる3連地団駄、16分ビジなど足15頻出のパターンを中速で踏ませてくれる
    • CyberConnect(ESP15)同様、基礎固めとしてやり込みたい譜面
  • 15.2: Pump Pump Pump(激)
    • ほぼ正面で踏み切れるが、3連地団駄が最後まで散りばめられている体力譜面
    • ブレイク明けから捻り+16分乱打風になり足15開始といった感じ
    • それまでは足13上位~14中堅くらいの譜面なので踏みやすいといって体力使い切らないように
  • 15.2: ZEPHYRANTHES(激)
    • 足15の高速TAG曲の中ではとっつきやすい。15版PUNISHER的な立ち位置
    • 随所に挟まる同時ラッシュで体勢を、その後のノーツを取りこぼすのが不安要素
      • 無理に同時を取らず脱力を意識し、大きな取りこぼしを出さない意識を
  • 15.1: ロストワンの号哭(鬼)
    • 677ノーツの体力譜面。それ以外の要素は14相応のため体力に自信があれば特攻もあり
    • 基本正面で踏めるが、466ノーツ目(歌詞だと、「誰なんだよ~」の箇所)は右足始点の左向きのアフロが降ってくる
      • 466ノーツ目を右足で自然に取るにはアフロの直前の3ノーツを右-右-左と導線を無視した踏み方となっている
      • ここまでして交互で踏むメリットもないので、普通にスライドでとっていい気がする
  • 15.1: ミックスナッツ(激)
    • 足13相当の8分滝と足15相当の16分乱打のメリハリがついている譜面
    • 16分乱打に関しては正面で踏み切れるため、足の最適化・体力のみが純粋にもとめられる
    • 正面で踏み切れるといっても、挑戦段階だと8分に集中していると突然来る16分に初動から遅れ苦戦を強いられるパターンも考えられ、入門よりかは基礎固めよりの練習曲
  • 15.1: ナイト・オブ・ナイツ(激)
    • 挑戦段階なら前半・後半のサビの16分を耐えるゲーム
      • 中盤の密度が薄くなるところがあってなお603ノーツなので、ロストワンの号哭(CSP14)同等の体力勝負となる
    • 配置は足14で通用するレベルなのも酷似しており、ロストワンの号哭(CSP14)と相互譜面となる
  • 15.1: insist(激)
    • 4つ打ち+ジャズのハイブリットな楽曲。
      • 譜面自体はジャズのスイングに合わせた音合わせになっているため8分の4つ打ちリズムで乗るともれなくグレるので注意
    • 裏入りもしくはシンコペーション(拍子の早入り)が多用され、曲をしってないとただただ認識難の譜面となる
      • クリアだけならすべて16分と置き換えて踏み切るのも手
    • 配置は足14強から出てくる16分捻りがほぼなく、リズム難で難易度を底上げしているのみ(15.0 +リズム難で0.1)
    • MagneticやSTEP MACHINEのようにリズム難だがノートの配置はしっかり音に合わせている譜面のため、プレイ回数・曲の聞き込みがそのままクリア力に直結する
  • 15.1: Inner Spirit -GIGA HiTECH MIX-(激)
    • 捻り等のテクはあまり要求されず3連地団駄主体の典型的な足14譜面に毛が生えた譜面
      • 3連以上の16分配置もあるが、正面で踏み切れる+中速BPMのため地力があれば苦にはならない
    • だが、密度は足15なので体力や譜面認識が追いついてないとクリアは難しい
    • この曲がクリアできるかで15入門に足り得る地力を確認できる
  • 15.0: リスペク風神(激)
    • 原作(東方風神録)へのリスペクトからか各ボスキャラ紹介ごとに譜面傾向が替わる
      • 特に原作のEx(裏ボス的なやつ)担当の洩矢諏訪子パートは今までの譜面傾向のすべてを盛り込んでいる
    • 上記、すべてが14の範疇にあるが求められる地力の範囲は広い
  • 15.0: Procyon(激)
    • 密度が薄く、局所的に足15の配置(4連以上の16分)が見られるがその局所難の地帯自体が少なく、足14上位陣の譜面と遜色ない
    • ラストのみ捻り配置の16分が入り始めてようやく足15となる。ZETA、Windy Faily(ESP15)同様ラストのみ足15弱となる入門曲
  • 15.0: Better Then Me(激)
    • 15入門におススメ。総合譜面だが、求められる水準が14でも通用するレベル
    • Inner Spirit-GIGA HiTECH MIX-(ESP15)のように密度のみで足15となっているパターン

15逆詐称(15↓)

  • 14.9:Valkyrie dimension(踊)
    • BPMギミックはこのレベルまで挑戦する段階ならクリア要因の阻害にはならない認識
    • 最加速後まではアフロ含む8分捻り滝でその後は地団駄メイン、ソフラン加味しても15はいかない。(譜面自体は14上位)
    • アフロを含む滝はBPMも近いPierce The SkyやSparkle Smilin'(どちらもESP14)で練習可能
  • 14.6: I Want To Do This Keep(激)
    • 中盤以降に2回来る12分音頭地帯が難所だが、捻りでなく地団駄のパターン切り替えなので
      リズムキープを意識すれば14適正くらいでもクリア可能
    • 地団駄のパターン切り替えだが、軸足を変えず踏むには捻りが必要
  • 14.6: starmain(激)
    • 中盤の16分のみ足14上位でそれ以外は足14中堅の踏みやすい8分滝主体
    • 足14が1/3程度埋まっているなら十分クリアを狙える難度
  • 14.4: スカーレット警察のゲットーパトロール24時(激)
    • 配置自体はミッドナイト☆WAR(ESP14)やロールプレイングゲーム(ESP14)といった16分3連地団駄中心の譜面
    • 上記の譜面とノーツ数も配置も差がないように思えるため14適正でもクリア可能な難易度
    • 152,153コンボ目の極小FAは歌詞通りスイッチの合図
      • 左、右で縦連を踏みかえることで以降のノーツも交互踏みが可能となる

個人差

  • 13.0~14.5: Horatio(激)
    • 地団駄大特化。ノンバーの場合他の譜面で類を見ない筋トレ譜面と化す。
    • 長い地団駄だが誤魔化しはきくのでクリア自体は逆詐称
    • ただ、地団駄を十数秒し続けるという動き自体が他の譜面でない為、練習自体もこの曲しかない状態
    • 毎回選曲していれば、いい筋トレになるかも?

あとがき

  • 地団駄以外の16分処理ができないと壁となる
  • つかれるからって足14,15を選曲しないとここ以降のクリアは当然見込めない
    • とりあえずゲーセン来るたびにエレクリ踊をやろう

【MarkDown】番号付きリストの間に文を記載する

  • ↓やりたいこと
  1. リスト1
    • ここに記載したい
  2. スト2
  • MarkDown記載
    • 半角スペース4つのインデントを入れる
1. リスト1
    - ここに記載したい
1. リスト2

【JavaScript】定義していないオブジェクトのプロパティを参照した際の振る舞い

  • 結論、参照した時点でそのプロパティがイニシャライズされる
  • 動的型宣言かつスクリプト言語という枠組みなので、定義外の参照にも寛容?

  • これの困る点は振る舞いとして例外に飛ばず、意図しないイニシャライズの検知が遅れること。

  • 仮に下記のobj.cSQLのバインド変数でTBL名とかカラム名を受け付けている場合、obj.cに入ってくる値が担保できない(開発者は定義したつもりがないので)
    • 結果、Scriptも落ちない、SQLも発行されているけどシステムの振る舞いがおかしいという事象に発展
    • これの発見フェーズが運用とかになるとしんどい、UTで正常系のケースを「クエリ実行の確認」とかにしてると余裕ですり抜けちゃう
var obj = {a:10, b:20};
//定義していないプロパティを参照
obj.c = 30;
//obj.cが30でイニシャライズされる
console.log(JSON.strigify(obj)); //{"a":10,"b":20,"c":30}

【Lobotomy Corporation社会見学#5】「規制済み」を鎮圧しよう!

注意点

  • 当記事はLobotomy Corporationのネタバレ(特にアブノーマリティ情報)があるため、既プレイか前項を承知の上で以降の文面をか読んでください
  • 下記Wikiからの引用
  • あなたの「発見する楽しみ」を台無しにする可能性があります。注意してください。
  • ロボトミ鎮圧シリーズ

「規制済み」所感

  • 見たらSAN値(SP)ピンチの「規制済み」
  • でもALEPH要素は↑だけ

前提条件

  • 慎重、正義Vの職員一人
  • 「長距離」以上のEGO武器を所持している

鎮圧方法

  • 移動、攻撃モーションが遅いため、正義Vの職員一人でヒットアウェイで鎮圧可能
  • 相手の攻撃範囲に入る前に横を通り抜けて、距離を取って攻撃を繰り替えす

  • 正義Vであれば攻撃を食らわず横を通り抜けられる

  • 通り抜けたら攻撃再開

  • EGO武器があるなら複数人で素早く鎮圧も可能

おススメEGO装備、アブノーマリティ

  • EGO武器
    • ハーモニー(HE)
      • 高DPSのW武器。攻撃速度は遅いが十分な距離が前提のためボトルネックにならない
    • 愛と憎しみの名のもとに(WAW)
      • 射程を生かして最大限に距離を取って鎮圧が可能
    • 魔法の弾丸(WAW)
      • 貫通で子どもを巻き込める。ただ職員も巻き込むので挟撃はお勧めしない
    • 星の音(ALEPH)
      • 蒼星くんのEGO武器。比較的耐性が低いWHITE(0.8)で遠距離攻撃可能

プレイ所感

  • とにかく顔を合わせるたびにSPを持ってくのでクリフォト暴走以外で作業をしたくない
  • 他のアブノマも見境なく攻撃するので、死体を処理できる環境なら放置でもよい
    • 移動速度も遅いので、職員の誘導をミスならければALEPHだけど犠牲なしで鎮圧も可
    • 逆に職員がみんなパニックになって組織が機能しなくなることがあるからALEPHなんですけどね

改訂履歴

  • なし

【JavaScript】Array.filterとArray.indexOfで重複した要素を取り除く

  • やってることは難しくないが、CallBack挟んでいたりで内部のロジックまで理解せず使用できちゃうのでちょっとだけ深堀りする
var arr = [1,2,3,3];
// [1,2,3]
var arrDistinct = arr.filter(
      (element,index,myself) => {return myself.indexOf(element) === index}
    )
  • arr.filterは配列arr内のすべての要素に対し引数に渡したCallback関数内の処理を反復実行する
    • calllback自体に渡す3つの引数は順に反復処理の実行中(current)の要素、その要素のIndex、filterに渡された配列自身
  • A:self.indexOf(element)は第一引数のみのため、2番目以降に出現する要素のIndexは取得しない
    • 同じ値の要素も一番目に取得したIndexを返す
  • B:indexはfllterが実行対象の配列arrの全要素を舐めるため、上記のIndexも取得する

  • returnしている条件式内でFalse(A,BのIndex)が不一致は重複行を示すため、 全要素に対し、この条件を指定すれば重複しない要素がtrueとなる

    • 結果としてarrDistinctには重複しないarr配列のシャローコピーが格納される

【Lobotomy Corporation社会見学#4】競合他社のシェア争いに打ち勝とう!(蒼白の試練)

注意点

  • 当記事はLobotomy Corporationのネタバレ(特にゲーム後半シナリオ)があるため、既プレイか前項を承知の上で以降の文面をか読んでください
  • 下記Wikiからの引用
  • あなたの「発見する楽しみ」を台無しにする可能性があります。注意してください。

蒼白の試練概要

  • 試練開始時に「白」「赤」「黒」「青」の「仕事人」が施設内に出現
  • 色はそれぞれ仕事人が得意とする攻撃属性と対応
  • 鎮圧時に「白」「赤」は対応属性ダメージを与えてくるため鎮圧直前に職員の残りHP,MPを確認

  • 鎮圧優先度

    • 青>黒>白>赤

「白」の仕事人

  • WHITE担当
  • 範囲攻撃が痛く、二次被害を起こしがち

  • 下記のような地獄絵図になることも。。

    • 非鎮圧職員はなるべく距離を取らせる(施設端までいくレベルで退避させる)
    • 特に270度円弧の範囲攻撃が痛い。できれば施設端を鎮圧エリアとしたい

中央エリアで発動されたパターン

  • WHITE耐性の高い職員でなるべく人数を割いて素早く鎮圧したい
  • どの攻撃にも予備動作があるので、一時停止で攻撃範囲内にいる非鎮圧職員を退避させる
    • また、範囲外に間に合わない職員は近くの作業部屋へ指示させる
    • ツール系の装着動作でも回避可能
  • オフィサーはもれなくバタバタお亡くなりになるので、死亡数がカウンタ減少となるアブノーマリティは定期的に様子を見る
    • e.g. ) 動く死体の山、風雲僧

「赤」の仕事人

  • RED担当
  • DPSが高く、職員によっては瞬殺される
  • ALEPH装備の高火力職員の2,3人の精鋭で対応したい(逆にいうと精鋭以外は対応不可なレベルの火力)
  • RED耐性が一番高い職員にヘイトを当てて背後から別職員で殴る
    • ヘイト役はRED装備でも問題なし(火力要員でなくヘイトを買うのが目的の為)
    • ヘイトが切り替わるため、ヘイト役が常に攻撃を受けるように移動指示を出す

  • 鎮圧時の貫通レーザーによる二次被害に注意

「黒」の仕事人

  • BLACK担当
  • 火力よりクリフォトに干渉するのが厄介
  • 近接攻撃メインのため、中距離以上の職員で編成したチームで鎮圧させる
  • 攻撃時に部門内のクリフォトカウンターを下げるため、脱走・暴走しても比較的安全な部署まで放置させる
    • 上記が難しい場合もあるので、鎮圧チームの火力がかなり重要
    • また攻撃により脱走したアブノーマリティが仕事人と殴り合うパターンがあるので脱走アブノーマリティによっては様子見でもよい
  • 鎮圧時にその部門内でクリフォト暴走を発生させる(これも考慮して上記対応をしたい)
  • BLACK攻撃のため、パニックによる二次被害も想定

「青」の仕事人

  • PEAL担当、「夕暮」以上の試練で登場
  • ALEPH装備でも1.0で耐性を持たないPEAL属性の攻撃をしてくる
  • 必然的にALEPH装備の職員で対応させるが、それでも体力消費が早くこまめなヘルス管理を強制される
  • シールドがない場合、リアクターでの自然回復で耐久。(シールドはWHITEに充てたい)
    • その際は別のALEPH装備職員で鎮圧させるというローテーションが必要
    • ローテが必須なのは放置すると別な職員の所までワープするため、足止めが必要なため

「爪」

  • 深夜の試練で登場。実質この試練のラスボス
  • 横一閃する範囲攻撃とターゲティングした複数職員への無差別攻撃が脅威
  • ターゲティングされた職員はされてない職員から隔離して、可能であればEV内等に退避させる
  • HPが一割くらいの状態のターゲティング攻撃はPARL属性のため、上記対応でもワンパンされ通用しない

    • 上記HPトリガーを意識して、最後の一押しは全職員総出で殴りこの攻撃をさせる前に仕留めたい
  • 無差別攻撃が始まったらエリア移動を挟んでとにかく攻撃に晒される時間を削減する

  • ターゲティング後の攻撃はEV上下移動でしのぐ

作業フロー

  • 職員を一か所にまとめる
    • この際に各仕事人対応チームを組む
    • 中央本部が広くて人が多くてもUIが重なってHP見えない的なのがなくなる+階層でチーム分けができる
    • 試練担当はALEPH装備の精鋭のみで対応、それ以外は避難のスタンス
  • クリフォト暴走は確実に成功する作業のみ
    • 試練クリアも条件になっているのでエネルギー回収は二の次。試練失敗を考慮して試行回数をこなせる作業時間が短いTETHクラス中心で指示しておく
    • せっかくなので別部門の職員にEGOギフト狙いで指示しても良い
    • e.g. ) 罰鳥、1.76MHz

おススメEGO装備、アブノーマリティ

  • テレジア(TETH)
    • 「白」の範囲攻撃が継続ダメージのためテレジアの効果である程度相殺も可能。
    • テレジア前に非鎮圧職員を待機させておくとよいかも
  • 絶望の騎士(WAW)
    • 「赤」「白」「黒」の鎮圧要員にバフをかけられる
    • 「青(PERL)」は2倍弱点となるので注意
  • 星の音(防具)(ALEPH)
    • 蒼星くんEGO防具。副産物でフロア内の職員のHPを回復していくれるため弾丸の節約になる
  • レティシア(防具)(HE)
    • PEAL以外0,7耐性と扱いやすい。絶望の騎士の加護をつければ0.35とALEPH装備並みの防具となる
  • 鋭利な涙の剣(WAW)
    • PEAL耐性あり(0.8)の数少ない防具。他耐性も0.8と高い数値でないので優秀なステータスのクラスV職員に装備させる

プレイ所感

  • つらい

改訂履歴

  • (2024/2/12)「白の仕事人」下記文言を削除(嘘ついてました、Wダメージのみです。死亡するのはツール系アブノマ「行動矯正」の効果です。。。)
    • 鎮圧時にまき散らすWHITE攻撃の爆破に巻き込まれてMP0になった職員はパニックにならず死亡する(専用モーションあり)

【JavaScript】ifの判定が省略されるパターン

  • 下記パターン
    • if文でbの評価は行わない
var a = true;
var b = false;
if(a && b) console.log("true");

検証

  • 下記ソースをブラウザの開発者モードのコンソールにぶち込めば下記結果返ってくる
    • AND,ORで1桁同士の演算の2進数カルノー図かけば当たり前でANDは先発がFalseなら全体でFalse確定のため、後発の評価をする必要がない
    • 理屈でわかってもJavaScriptは変数にfunctionをそのまま代入可のため、思わぬハマりポイントになる
      • 下記でいうconditionAがクソ長メソッドだったらとか、if条件式がオペランドまみれとか
var conditionA = () => {
  console.log("A");
  return false;
}
var conditionB = () => {
  console.log("B");
  return true;
}
if(conditionA() && conditionB()); // Aのみ出力
if(conditionA() || conditionB()); // A,B両方出力